7
如何使用现有的查询字符串将用户重定向到同一页面,但添加/修改为“页面”1。PHP添加/修改查询字符串参数并获取URL
我想1层的方法是:
- 解析
$_SERVER['QUERY_STRING']
到一个数组 - 是否存在数组中
page
,修改的值,否则将其添加 - 使用
http_build_query
得到查询字符串追加到$_SERVER['PHP_SELF']
但是有没有更好/更直接的方法?
如何使用现有的查询字符串将用户重定向到同一页面,但添加/修改为“页面”1。PHP添加/修改查询字符串参数并获取URL
我想1层的方法是:
$_SERVER['QUERY_STRING']
到一个数组page
,修改的值,否则将其添加http_build_query
得到查询字符串追加到$_SERVER['PHP_SELF']
但是有没有更好/更直接的方法?
只是为了确保你了解它,使用parse_str
解析您的查询字符串:
<?php
parse_str($_SERVER['QUERY_STRING'], $query_string);
$query_string['page'] = basename($_SERVER['PHP_SELF']);
$rdr_str = http_build_query($query_string);
使用吉姆·鲁宾斯坦的回答,我想出了,我想我可能会共用一个有用的功能:
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>
哦我看这一点,但错过了在哪里可以传递数组的部分 – 2011-05-05 05:43:59
肯定会让事情变得更简单! – 2011-05-05 05:44:40
注:对于'http_build_query',需要PECL库pecl_http> = 0.21.0。 – 2012-02-10 00:30:05