从另一个字符串PHP(正则表达式)中删除动态字符串

时间:2017-09-30 17:51:54

标签: php regex

我需要删除此字符串

page=x

x是一个动态字符串(应该是一个数字但可以是任何东西)

来自另一个字符串,例如

url/?filter=value&page=2&filter2=value

但它也可以是:

url/?page=2

所以,这些是作为例子的案例

1. url/?page=2&filter=value
2. url/?page=2
3. url/?filter=value&page=2
4. url/?filter=value&page=2&filter2=value

他们应该回来:

1. url/?filter=value
2. url/
3. url/?filter=value
4. url/?filter=value&filter2=value

我怎样才能使用正则表达式?

1 个答案:

答案 0 :(得分:1)

你说过:

[?&]page=[^&]+

适合你。这会查找?&然后page=以及之后的任何内容,直到&。更长的答案是:

echo rtrim(preg_replace('/([?&])page=[^&]*&?/', '$1', $string), '&?')

将正确处理介绍和结束参数的情况。

演示:https://3v4l.org/SupbH