0

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

$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

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

4

3 回答 3

3

关于什么:/a\[\]=1(&|\b)/

这样,a[]=1 只有在它后面跟着一个&或字符串结尾时它才会捕获。

于 2013-01-29T19:20:55.587 回答
1

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

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

或者......你总是可以使用preg_replace_callback

于 2013-01-29T19:41:55.233 回答
0

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

$without_filter = preg_replace("/(&)?a\[\]=1/", '', $my_url, 1);
于 2013-01-29T19:22:22.333 回答