扩展我的原始问题here:我现在想从查询字符串中删除多个变量。
例如,我想删除变量bar1
&来自查询字符串的bar2
。我尝试了以下代码:
echo parseQueryString("http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'],"bar2","bar1");
但这并不会删除这两个变量,只会删除bar2
。
任何帮助表示感谢。
谢谢,
马特
答案 0 :(得分:3)
我会用
parse_str($_SERVER["QUERY_STRING"], $array);
拆分查询字符串
unset($array["bar1"]);
删除不需要的变量
http_build_query($array);
将查询字符串粘合在一起
答案 1 :(得分:2)
你会想要像
这样的东西echo parseQueryString(parseQueryString("http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'],"bar2"),"bar1");
或者,因为我假设parseQueryString是您定义的函数,所以您可以更改它,以便接受数组参数并在数组上循环。
答案 2 :(得分:1)
我创建了一个可以使用多个参数的新函数。
<?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"));
?>
答案 3 :(得分:0)
我认为parseQueryString
函数不适用于包含&bar[]=5&bar[]=12
等数组组件的查询字符串。我认为除结果之外的所有字符都会从结果中删除。