Как с помощью регулярного выражения найти в текст все ссылки с определенным словом в названии?

Добрый день!

Есть текст вида:
Текст текст текст 
<a href="https://site.ru">test</a>
<a href="https://site2.ru">Подписаться</a>
<a href="https://site3.ru">Тест - Подписаться</a>
<a href="https://site3.ru">Подписаться / Тест</a>


Подскажите пожалуйста, как можно удалить все ссылки, где в названии есть слово "Подписаться", независимо от того одно ли слово содержится в названии или вместе с другими словами. В результате должен получится вот такой текст:
Текст текст текст 
<a href="https://site.ru">test</a>


Заранее спасибо!

Пробовал делать вот так, но понимаю что это неправильно...
$text = preg_replace('#<a href="(.*?)">(.*?)Подписаться(.*?)</a>#', "", $text);
  • Вопрос задан
  • 97 просмотров
Решения вопроса 1
toxa82
@toxa82
Ваш вариант вполне рабочий, остаются только переносы строк. Я удалил их так:
$text = 'Текст текст текст
<a href="https://site.ru">test</a>
<a href="https://site2.ru">Подписаться</a>
<a href="https://site3.ru">Тест - Подписаться</a><a href="https://site3.ru">Тест - Подписаться</a>
<a href="https://site3.ru">Подписаться / Тест</a>
<a href="https://site3.ru">подписаться / Тест</a>';
$text = preg_replace('#<a href="(.*?)">(.*?)Подписаться(.*?)</a>\r?\n?#imu', "", $text);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы