Совпадение регулярных выражений, затем замена?

#php #regex

#php #регулярное выражение

Вопрос:

Допустим, у меня есть что-то вроде:

 amp;page=4
  

Я хочу заменить это и сделать его пустым, чтобы оно не существовало.

Но этот номер страницы может быть любым, 66, 98, 17, 2, 109, и т.д.

В настоящее время у меня есть что-то вроде:

 $currentpage = str_replace("amp;page=", "", $currentpage);
  

Но мне нужно, чтобы это также удаляло число, как мне это сделать?

Спасибо.

Ответ №1:

 $currentpage = preg_replace("/amp;page=d /", "", $currentpage);
  

Но если вы создаете это самостоятельно, вы должны сделать…

 $get = $_GET;

unset($get['page']);

echo http_build_query($get);
  

Это выведет все параметры GET, красиво сериализованные в виде строки. Когда вы отключаете page элемент, он, очевидно, не появится 🙂

Комментарии:

1. Это отлично работает, как бы я это сделал, если amp;sort =lowest (удалите все это) — поскольку тот, который вы опубликовали, похоже, работает только для цифровых символов. Должен ли я просто использовать w в отличие от d ?

2. @Kyle Ты мог бы изменить это на amp;sort=[^amp;$] .

3. знак доллара в [^amp;$] не имеет смысла. Внутри символьного класса это буквальный знак доллара. Чтобы получить эквивалентную функциональность как «не конец строки», вы должны сделать что-то вроде: (?!amp;|$) … Я бы просто оставил это вообще 🙂