如何使用现有的查询字符串将用户重定向回同一页面,但是添加/修改了1个“页面”。
我认为1方法是:
$_SERVER['QUERY_STRING']
解析为数组page
,请修改该值,否则添加http_build_query
将查询字符串附加到$_SERVER['PHP_SELF']
但是有更好/更直接的方式吗?
答案 0 :(得分:23)
为了确保您了解它,请使用parse_str
来解析您的查询字符串:
<?php
parse_str($_SERVER['QUERY_STRING'], $query_string);
$query_string['page'] = basename($_SERVER['PHP_SELF']);
$rdr_str = http_build_query($query_string);
答案 1 :(得分:5)
使用Jim Rubinstein的回答,我提出了一个我认为可能会分享的有用功能:
function modQuery($add_to, $rem_from = array(), $clear_all = false){
if ($clear_all){
$query_string = array();
}else{
parse_str($_SERVER['QUERY_STRING'], $query_string);
}
if (!is_array($add_to)){ $add_to = array(); }
$query_string = array_merge($query_string, $add_to);
if (!is_array($rem_from)){ $rem_from = array($rem_from); }
foreach($rem_from as $key){
unset($query_string[$key]);
}
return http_build_query($query_string);
}
例如:
<a href="?<?=modQuery(array('kind'=>'feature'))?>">Feature</a>