2013-04-15 92 views
0

我想將查詢字符串添加到URL,但是,URL格式是不可預知的。該URL可以是將查詢字符串添加到隨機URL

  • http://example.com/page/ - >http://example.com/page/?myquery=string
  • http://example.com/page - >http://example.com/page?myquery=string
  • http://example.com?p=page - >http://example.com?p=page&myquery=string

這些都是我想的網址,但它可能是有其他格式,我不知道。

我想知道是否有標準,圖書館或常見的方式來做到這一點。我使用PHP。

編輯:我正在使用Cbroe說明和Passerby的代碼。 Hamza還有另一個function,但我想用PHP函數會更好,並且也有更簡潔的代碼。

+0

也許你應該使用國防部重寫.htaccess的? – Robert

+0

試過$ _SERVER ..? – alwaysLearn

回答

3
function addQuery($url,array $query) 
{ 
    $cache=parse_url($url,PHP_URL_QUERY); 
    if(empty($cache)) return $url."?".http_build_query($query); 
    else return $url."&".http_build_query($query); 
} 

// test 
$test=array("http://example.com/page/","http://example.com/page","http://example.com/?p=page"); 
print_r(array_map(function($v){ 
    return addQuery($v,array("myquery"=>"string")); 
},$test)); 

Live demo

1

我想知道是否有標準,庫或常見的方式來做到這一點。我使用PHP。

取決於故障安全 - 因此更復雜 - 你想要它。

最簡單的方法是查找網址中是否有? - 如果是,請追加&myquery=string,否則追加?myquery=string。這應該覆蓋大多數符合標準的URL的情況。

如果你想讓它更復雜,你可以採取的URL除了使用parse_url然後parse_str,然後用價值string添加鍵值myquery到陣列的第二個函數返回 - 然後把它所有的重新結合在一起,使用http_build_query爲新的查詢字符串部分。

0

您應該嘗試http_build_query()函數,我認爲這就是您要找的,也可能是parse_str()

1

一些意大利麪條代碼:

結果:

http://example.com/page/?myquery=string 
http://example.com/page?myquery=string 
http://example.com/page/wut/?aaa=2&myquery=string 
http://example.com?p=page&myquery=string