在做网页翻页时总会遇到当前网址参数校验和处理问题,URI query参数处理方法有很多种,字符串替换、数组处理等等,而且实现方法也不一,本文总结两种方法,如各位有更精简的方法欢迎留言讨论。典型的带query地址如下:
//test.php?page=123
//test.php?page=123&a=4
//test.php?a=4&page=123&b=1
//test.php?a=4&b=1&page=123
下文实例替换其中的page=123这个参数。
一、读取并分解query
$url=$_SERVER["REQUEST_URI"];//request url address
$purl=parse_url($url);
$oldq=$purl['query'];//same as $_SERVER["QUERY_STRING"]
这里的$oldq即是全部query序列,比如上文的"a=4&page=123&b=1"。
二、替换query参数
如下方法任选其一,均已测试验证。
1、用parse_str函数
$arrTmp=array();
parse_str($oldq,$arrTmp); //To array
unset($arrTmp['page']);
$newq = http_build_query($arrTmp);//build again
$newUrl=str_replace($oldq,$newq,$url);//same as $_SERVER['SCRIPT_NAME'].'?'.$newq;
2、使用preg_replace
使用preg_replace替换page参数,page后面总是跟数字,所以很好区分。
$newq=preg_replace("/^page=\d+($|&)/","",$oldq);
$newq=preg_replace("/&page=\d+/","",$newq);
$newUrl=str_replace($oldq,$newq,$url);
其中,$oldq就是上文的query字符串,如果替换后不打算再添加query参数,也可直接使用上文的$url。 |