如何使用PHP preg_replace()定义完全匹配

时间:2013-01-29 19:18:40

标签: php regex preg-replace

我正在尝试使用PHP preg_replace()从URL中删除一些参数。例如,我需要从下面的网址中删除a[]=1

$my_url = 'www.myhost.com/filter.php?a[]=1&a[]=12&a[]=13&a[]=14'

所以我正在使用:

$without_filter = preg_replace("/(&)?a\[\]=1/", '', $my_url);

我只想删除a[]=1,但它会从其他参数中删除包含a[]=1的部分,所以我得到了:

www.myhost.com/filter.php?234

有人可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:3)

怎么样:/a\[\]=1(&|\b)/

如果它后跟a[]=1或字符串结尾,它将仅捕获&

答案 1 :(得分:1)

按照preg_replace的手册页,您可以执行以下操作:

$without_filter = preg_replace("/\&(a\[\]=1)(\&|$)/", '\2', $my_url);

或者......您可以随时使用preg_replace_callback

答案 2 :(得分:0)

使用$limit的{​​{1}}参数并将其设置为preg_replace,这应该只替换一次。假设您的参数始终以这种方式排序:

1