从另一个字符串删除动态字符串PHP(正则表达式)[关闭]

I need to remove this string

page=x

x being a dynamic string (should be a number but can be anything)

from another string, for example

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

but it can also be:

url/?page=2

So, these are the cases as examples

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

And they should return:

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

How can I do that with regex?

You've said:

[?&]page=[^&]+

works for you. This will look for an ? or & then page= and anything after it until an &. A bit longer answer though is:

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

which will correctly handle the intro and ending parameter cases.

Demo: https://3v4l.org/SupbH