在我原來的問題上擴展here:我現在想從查詢字符串中刪除多個變量。從查詢字符串中刪除一個值第2部分
例如,我想從查詢字符串中刪除變量bar1
& bar2
。我曾嘗試下面的代碼:
echo parseQueryString("http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'],"bar2","bar1");
但這不會刪除這兩個變量,只有bar2
。
任何幫助表示讚賞。
謝謝
馬特
在我原來的問題上擴展here:我現在想從查詢字符串中刪除多個變量。從查詢字符串中刪除一個值第2部分
例如,我想從查詢字符串中刪除變量bar1
& bar2
。我曾嘗試下面的代碼:
echo parseQueryString("http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'],"bar2","bar1");
但這不會刪除這兩個變量,只有bar2
。
任何幫助表示讚賞。
謝謝
馬特
你會想要像
echo parseQueryString(parseQueryString("http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'],"bar2"),"bar1");
另外,因爲我假設parseQueryString是你定義的函數,你可以改變它,所以它接受數組參數並遍歷數組。
我會用
parse_str($_SERVER["QUERY_STRING"], $array);
拆開查詢字符串
unset($array["bar1"]);
刪除不需要的變量
http_build_query($array);
粘上查詢字符串一起回來
感謝您的回答! – Matt 2010-11-21 13:40:07
我創建了一個可以與多個參數一起工作的新函數。
<?php
function parseQueryString($url,$remove_arr) {
$infos=parse_url($url);
$str=$infos["query"];
$op = array();
$pairs = explode("&", $str);
foreach ($pairs as $pair) {
list($k, $v) = array_map("urldecode", explode("=", $pair));
$op[$k] = $v;
}
foreach($remove_arr as $remove){
if(isset($op[$remove])){
unset($op[$remove]);
}
}
return str_replace($str,http_build_query($op),$url);
}
echo parseQueryString("http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'],array("bar2","bar1"));
?>
這很棒,也很有用,非常感謝。 – Matt 2010-11-23 14:09:56
我不認爲parseQueryString
功能將查詢字符串的工作與陣列組件,如&bar[]=5&bar[]=12
等,我認爲除了人們從結果被丟棄。
歡迎來到StackOverflow並感謝發佈。不幸的是,這並沒有真正回答這個問題。請看[如何回答](http://stackoverflow.com/questions/how-to-answer)。 – 2012-11-18 21:41:30
這工作完美,非常感謝! – Matt 2010-11-21 13:39:37