数组中的str_replace字符串自动增加

时间:2010-01-14 11:31:37

标签: php string arrays str-replace

我们可以做些什么来删除 page = 2& 从:

"page=2&param1=value1&param2=value2" or
"param1=value1&page=2&param2=value2".

成为:

"param1=value1&param2=value2" or
"param1=value1&param2=value2".

在page = 2的情况下,2是任何自然的否。即(0至32000)。

此致

4 个答案:

答案 0 :(得分:10)

您可以使用parse_str将字符串解析为数组,从数组中取消设置页面,然后使用http_build_query重新构建结果。

代码示例:

$str = 'page=2&param1=value1&param2=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&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);