Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > Обработка URL'ов


Автор: _AXE_ 23.4.2009, 23:08
Доброй ночи.

Прошу помочь в следующем вопросе. На форуме есть подписи. В этих подписях есть ссылки (и не одна ссылка). Нужно составить регулярное выражение, которое в этом тексте найдет ссылки не на example.com (т.е. мой сайт) и добавит к ним атрибут rel=nofollow

Автор: InvalidProperty 24.4.2009, 07:55
наверное, будет что-то вроде
Код

#<a href="http://(?!example.com).+".*(>)# rel="nofollow">#Ui

только нужно будет более грамотно написать что должно быть вместо ".+" после example.com, но примеров в инете полно на эту тему.
забыл модификатор, инвертирующий жадность квантификаторов  smile . Уже исправился

Автор: enof 24.4.2009, 12:45
InvalidProperty,  И че вы это такое написали?
Код

preg_replace('#(<a href="http://(?!example.com).*".*)>#Uui', '\\1 rel=nofollow>', $str)

Автор: InvalidProperty 24.4.2009, 12:50
enof, это в жанре pcre, я в php забыл как делается smile 

Автор: enof 24.4.2009, 12:54
InvalidProperty,  Пусть даже и так, все равно замена неправильно написана, с подмасками неверно smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)