我们可以做些什么来删除 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)。
此致
答案 0 :(得分:10)
您可以使用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);
答案 1 :(得分:1)
$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), "$");
答案 2 :(得分:0)
如果我理解正确,这将允许您删除任意页面(只要您知道该号码):
function replacePage($querystring, $page = 1) {
return str_replace('page='.$page.'&', '', $querystring);
}
作为旁注,如果可以避免使用正则表达式,则不是编码的最佳方式。它们很慢,应该用其他方法替换,例如str_replace
或尽可能标记。就个人而言,我会使用我的方法如果我知道我必须从查询字符串中删除哪个页面,因为它的运行速度比preg_replace快得多。
答案 3 :(得分:0)
使用爆炸?
$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);