我们可以做些什么来删除page=2& 来自:
"page=2¶m1=value1¶m2=value2" or
"param1=value1&page=2¶m2=value2".
变得:
"param1=value1¶m2=value2" or
"param1=value1¶m2=value2".
在 page=2 的情况下,2 是任何自然编号。即(0到32000)。
问候,
我们可以做些什么来删除page=2& 来自:
"page=2¶m1=value1¶m2=value2" or
"param1=value1&page=2¶m2=value2".
变得:
"param1=value1¶m2=value2" or
"param1=value1¶m2=value2".
在 page=2 的情况下,2 是任何自然编号。即(0到32000)。
问候,
您可以使用parse_str将字符串解析为数组,从数组中取消设置页面,然后使用http_build_query重建结果。
代码示例:
$str = 'page=2¶m1=value1¶m2=value2';
$arr = array();
parse_str($str, $arr);
unset($arr['page']);
echo http_build_query($arr);
$str = trim(preg_replace("/\bpage=\d+&?/", "", $str), "$");
正则表达式:
\b # Match a "boundary" point (start of new word)
page= # Match 'page='
\d+ # Match 1 or more digits
&? # Match a '&' if it exists
外部的修剪将去除&
可能残留的任何尾随。
如果要修剪任何内容,可以将 替换为\d+
以[^&]+
匹配 . 以外的任何字符&
。
$str = trim(preg_replace("/\bpage=[^&]+&?/", "", $str), "$");
如果我理解正确,这将让您删除任意页面(只要您知道数字):
function replacePage($querystring, $page = 1) {
return str_replace('page='.$page.'&', '', $querystring);
}
附带说明一下,如果可以避免,使用正则表达式并不是最佳的编码方式。它们很慢,应该用其他方法代替,例如str_replace
在可能的情况下进行标记化。如果我知道我必须从查询字符串中删除哪个页面,我个人会使用我的方法,因为它的运行速度比 preg_replace 快得多。
使用爆炸?
$urlString = "page=2¶m1=value1¶m2=value2";
$arr = explode('&',$urlString);
print_r( $arr );
foreach( $arr as $var => $val ) {
if( substr( $val, 0, 6 ) == 'param2' ) {
unset( $arr[ $var ] );
}
}
$urlString = implode('&',$arr);