Php str_替换数组中的字符串数自动增加

Php str_替换数组中的字符串数自动增加,php,string,arrays,str-replace,Php,String,Arrays,Str Replace,如何删除page=2& 发件人: 成为: "param1=value1&param2=value2" or "param1=value1&param2=value2". 如果页码=2,则2为任何自然编号,即(0至32000) 关于,如果我理解正确,这将允许您删除任意页面(只要您知道号码): 另外,如果可以避免使用正则表达式,那么使用正则表达式并不是编码的最佳方式。它们的速度很慢,应尽可能使用其他方法(如str_replace或标记化)进行替换。就我个人而言,如果我知道我必须从查

如何删除page=2& 发件人:

成为:

"param1=value1&param2=value2" or
"param1=value1&param2=value2".
如果页码=2,则2为任何自然编号,即(0至32000)


关于,

如果我理解正确,这将允许您删除任意页面(只要您知道号码):

另外,如果可以避免使用正则表达式,那么使用正则表达式并不是编码的最佳方式。它们的速度很慢,应尽可能使用其他方法(如
str_replace
或标记化)进行替换。就我个人而言,如果我知道我必须从查询字符串中删除哪个页面,我会使用我的方法,因为它将比preg_replace运行得快得多

 $str = trim(preg_replace("/\bpage=\d+&?/", "", $str), "$");
regexp:

\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), "$");
您可以使用将字符串解析为数组,取消设置数组中的页面,然后使用重新构建结果

代码示例:

$str = 'page=2&param1=value1&param2=value2';
$arr = array();
parse_str($str, $arr);
unset($arr['page']);
echo http_build_query($arr);
使用爆炸

$urlString = "page=2&param1=value1&param2=value2";
$arr = explode('&',$urlString);
print_r( $arr );
foreach( $arr as $var => $val ) {
    if( substr( $val, 0, 6 ) == 'param2' ) {
        unset( $arr[ $var ] );
    }
}
$urlString = implode('&',$arr);

这将在
“param1=value1¶m2=value2&page=2”的末尾留下
&
@vava-添加了一个修剪以处理该情况如果访问者手动键入的页面不是数字怎么办?如果要解析查询字符串,请显式删除有问题的键并重建它,但感谢您的输入
page=2
也可以位于字符串的末尾,即后面不跟
&
?创建、取消设置,对我来说,内爆似乎有点过分,但它看起来比正则表达式干净得多。感谢Mark到目前为止的输入,但是如何使用与我的问题相关的http_build_查询,并用于pafination?代码的输出:数组([0]=>page=2[1]=>param1=value1[2]=>param2=value2)看起来不像我的第一篇帖子,但是谢谢你的输入你回显了数据吗?i、 e.
echo-replacePage($myQueryString,2)
$str = 'page=2&param1=value1&param2=value2';
$arr = array();
parse_str($str, $arr);
unset($arr['page']);
echo http_build_query($arr);
$urlString = "page=2&param1=value1&param2=value2";
$arr = explode('&',$urlString);
print_r( $arr );
foreach( $arr as $var => $val ) {
    if( substr( $val, 0, 6 ) == 'param2' ) {
        unset( $arr[ $var ] );
    }
}
$urlString = implode('&',$arr);