2011-02-24 35 views
0

我在努力做一些看起來很簡單的一個網址的結尾......附加參數與PHP

我使用PHP捲曲抽取數據並將其插入到我的網站。在輸出之前,cURL將數據保存爲一個字符串$data

我想要做的是針對所有包含在$data中的URL。 URL有時包含一個固定值參數,我需要將其移至URL的末尾。 URL的這個樣子的,其中category=widgets可以在URL中任何地方出現:

http://www.mysite.com/script.php?category=widgets&show=all&size=big 

我需要的參數category=widgets移動到所有網址的結尾,讓它們看起來像這樣:

http://www.mysite.com/script.php?show=all&size=big&category=widgets 

我我認爲我可以先用str_replace刪除所有發生的category=widgets,這很簡單。

我遇到的問題是在URL的末尾附加category=widgets。由於URL是動態的,因此preg_replace可能更合適。我對正則表達式很陌生,這讓我很頭疼。

希望你的幫助。謝謝。

+3

問題:爲什麼你需要將參數移動到最後? – 2011-02-24 13:51:18

+0

確實;沒有理由爲什麼'http://www.mysite.com/script.php?show=all& size = big&category = widgets'應該與http://www.mysite.com/script.php?category=widgets&show有所不同=所有&大小= big'。這需要哪些參數按某個順序來自哪裏? – 2011-02-24 14:11:21

+0

@Felix Kling @Matt Gibson是的腳本仍然工作,無論參數順序。但是,我需要在整個網站上整合網址結構,我們的URL具有許多相同的參數,但順序不同。當網站被抓取到100次不同的時間時,我們會丟失帶寬,而實質上是相同的內容,但使用不同的網址。對於整合URL結構,還有頁面等級流的搜索引擎優化。 – Matt 2011-02-24 14:45:28

回答

4

我建議使用parse_url,因爲從長期來看,這可能比字符串操作更穩健。

因此,您可以使用parse_url來提取各個塊,然後根據需要組合一個新的URL。

+1

然後你可以使用[parse_str](http://www.php.net/parse_str)來解析查詢部分(確保使用數組參數)和[http_build_query](http://www.php.net/ http_build_query)重新組裝它。 – 2011-02-24 14:33:19