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