Preg_replace специальные символы &
Добрый день,
У меня есть ошибка в моем preg_replace. Я хотел бы заменить &&
только с одним &
, а также ?&
с ?
,
Мой код выглядит так:
$reg = preg_replace("#\&\&#is", "&
", $reg);
$reg = preg_replace("#\?\&#is", "?
", $reg);
Не могли бы вы помочь мне исправить это? Я уверен, что это какая-то основная ошибка, так что извините за это...
Спасибо!
2 ответа
Решение
Вам не нужно убегать &
только ?
$reg = preg_replace("#&&#", "&", $reg);
$reg = preg_replace("#\?&#", "?", $reg);
Вы можете упростить два регулярных выражения в одно.
echo preg_replace("#([?&])\s*&#", "$1", ' ? &lang=en');
Выход:
?lang=en
Ваши модификаторы не имеют смысла, так как вы не используете альфа-символы или .
,
Также &
это не специальный символ регулярного выражения, просто ?
, Если в классе символов ([]
) ни то, ни другое не нужно будет заменять.
Regex101 Demo: https://regex101.com/r/iS4mQ0/1