Почему не работает preg_replace?

Здравствуйте, уважаемые форумчане! Почему у меня не срабатывает замена на preg_replace?
Исходный текст:
[quotemsg data-username="Александр З"]Здравствуйте, Подскажите как можно в исходном коде статей расставить классы для заголовков H2? Статей много - вручную не вариант. По сути надо в цикле пройтись по всем материалам и при встрече заголовка, в зависимости от его порядка в тексте, дать ему класс. Например классы header1, header2, header13 Сказать легко - сделать не могу[/quotemsg]Отвечаю на сообщение с первой страницы

Код, как обрабатываю:
if (preg_match("~\[quotemsg data-username=\"(.*?)\"\].*?\[/quotemsg\]~",$text ,$a))
 {  return preg_replace("~\[quotemsg data-username=\"(.*?)\"\](.*?)\[/quotemsg\]~", '$2', $text);}

Но, по результату так и вижу исходный текст
  • Вопрос задан
  • 123 просмотра
Решения вопроса 1
yesbro
@yesbro
Думаю, помогаю думать
Если тебе надо оставить то что между [quotemsg][/quotemsg] то preg_replace работает корректно.

А зачем делать return из if?

$text = preg_replace("~\[quotemsg data-username=\"(.*?)\"\](.*?)\[/quotemsg\]~", '$2', $text);


https://www.php.net/manual/ru/function.preg-replace.php
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@psiklop
Плохой код.
Регулярное выражение выполняется два раза - это излишне.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽