Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Регулярные выражения. Манипуляции со ссылками

21K
01 декабря 2009 года
DeamonShan
65 / / 14.05.2008
Доброго времени суток.

Как написать регулярку, чтобы она удаляла все ссылки которые не совпадают с доменом сайта?

например:

<a href="http://drugoydomain.ru">link</a>
<a href="http://mydomain.ru">link2</a>

вот нужно первую ссылку удалить, а вторую не трогать.
Подскажите плиз...
244
01 декабря 2009 года
UAS
2.0K / / 19.07.2006
Язык-то какой? Да и сами бы почитали маны, задача элементарнейшая.
21K
01 декабря 2009 года
DeamonShan
65 / / 14.05.2008
точно...PHP... я читал но то что я понял и сделал - удалило все ссылки с сайта...
239
02 декабря 2009 года
Dolonet
1.7K / / 20.05.2000
Цитата: DeamonShan
Доброго времени суток.

Как написать регулярку, чтобы она удаляла все ссылки которые не совпадают с доменом сайта?

например:

<a href="http://drugoydomain.ru">link</a>
<a href="http://mydomain.ru">link2</a>

вот нужно первую ссылку удалить, а вторую не трогать.
Подскажите плиз...


Регулярка примерно такая, но требует доточки. Почитайте мануал или какой-нибудь другой.

 
Код:
\<a[^>]+href=[\'\"]?http:\/\/mydomain\.ru.*?[\'\"\]?[^>]*\>.*?\<\/a\>

Эта регулярка как бы говорит нам, что урл показывает на сайт через урл. Ещё ссылка может быть относительной, т.е. без http.
92
02 декабря 2009 года
Тень Пса
2.2K / / 19.10.2006
О какие люди =)
если ссылка относительная, то она будет вестина исходный сайт :)
а регулярка проверяет на совпадение, а не на совпадение... )

можно так попробовать (на вскидку):
 
Код:
$content = preg_replace("/(<a.*?href=[\"\']?(?:http?:\/\/)?(?!www.mydomain.ru).*?[\"\']?.*?>.*?<\/a>/si"), "", $content);
239
02 декабря 2009 года
Dolonet
1.7K / / 20.05.2000
Привет :)

Не хотел решать всю задачу. Имхо стоит давать людям и самим что-то додумать, понять, как работает код.
92
02 декабря 2009 года
Тень Пса
2.2K / / 19.10.2006
аналогично, я тоже её не всю решил ))))))))))
21K
04 декабря 2009 года
DeamonShan
65 / / 14.05.2008
знаю я как работает ваш код )))))))

дело в том-что эти ваши примеры (я их упростил) удаляет все ссылки на странице... абсолютно все...

вот мой пример:

 
Код:
preg_replace("/\<a.*?href.*?(?!moydomain.ru).*?\>.*?\<\/a\>/si","",$content);
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог