在我原来的问题上扩展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