Регулярные выражения. Манипуляции со ссылками
Как написать регулярку, чтобы она удаляла все ссылки которые не совпадают с доменом сайта?
например:
<a href="http://drugoydomain.ru">link</a>
<a href="http://mydomain.ru">link2</a>
вот нужно первую ссылку удалить, а вторую не трогать.
Подскажите плиз...
Язык-то какой? Да и сами бы почитали маны, задача элементарнейшая.
точно...PHP... я читал но то что я понял и сделал - удалило все ссылки с сайта...
Цитата: DeamonShan
Доброго времени суток.
Как написать регулярку, чтобы она удаляла все ссылки которые не совпадают с доменом сайта?
например:
<a href="http://drugoydomain.ru">link</a>
<a href="http://mydomain.ru">link2</a>
вот нужно первую ссылку удалить, а вторую не трогать.
Подскажите плиз...
Как написать регулярку, чтобы она удаляла все ссылки которые не совпадают с доменом сайта?
например:
<a href="http://drugoydomain.ru">link</a>
<a href="http://mydomain.ru">link2</a>
вот нужно первую ссылку удалить, а вторую не трогать.
Подскажите плиз...
Регулярка примерно такая, но требует доточки. Почитайте мануал или какой-нибудь другой.
Код:
\<a[^>]+href=[\'\"]?http:\/\/mydomain\.ru.*?[\'\"\]?[^>]*\>.*?\<\/a\>
Эта регулярка как бы говорит нам, что урл показывает на сайт через урл. Ещё ссылка может быть относительной, т.е. без http.
если ссылка относительная, то она будет вестина исходный сайт :)
а регулярка проверяет на совпадение, а не на совпадение... )
можно так попробовать (на вскидку):
Код:
$content = preg_replace("/(<a.*?href=[\"\']?(?:http?:\/\/)?(?!www.mydomain.ru).*?[\"\']?.*?>.*?<\/a>/si"), "", $content);
Не хотел решать всю задачу. Имхо стоит давать людям и самим что-то додумать, понять, как работает код.
аналогично, я тоже её не всю решил ))))))))))
дело в том-что эти ваши примеры (я их упростил) удаляет все ссылки на странице... абсолютно все...
вот мой пример:
Код:
preg_replace("/\<a.*?href.*?(?!moydomain.ru).*?\>.*?\<\/a\>/si","",$content);