Статья размещена автором Бетке Сергей Сергеевич

PHP и регулярные выражения: удаляем ссылки на конкретный домен

Ещё один совсем короткий пост. Возникла необходимость при обработке статьи в wordpress написать фильтр, который будет удалять из содержимого ссылки, но — только ссылки на конкретный домен, а все остальные при этом необходимо сохранить. Решим эту задачу регулярным выражением.

А регулярное выражение достаточно простое — #<a\s+[^>]*href=["']http://www.domen.net/.*?["'].*?>(.*?)</a>#s, и заменяем все вхождения указанного регулярного выражения на \1 (собственно говоря — то, что было между <a> и </a>). И в очередной раз с отладкой помог online сервис тестирования regexp.

Отзывы » (2)

  1. А если ссылка не заключена в кавычки, то замена не произойдет?

    • В общем — да, не произойдёт. Но доработать регулярное выражение несложно:
      #<a\s+[^>]*href=["']?http://www.domen.net/.*?["']?.*?>(.*?)</a>#s
      Хотя драть нужно таких разработчиков, которые генерируется не xhtml код. Значения аттрибутов обязаны быть в кавычках в соответствии со спецификацией.
      P.S. Кстати, для вставки этого кода в комментарий пришлось воспользоваться html encoder’ом.

Опубликовать комментарий

XHTML: Вы можете использовать следующие HTML теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Tags Связь с комментариями статьи:
RSS комментарии
Обратная ссылка