Проблема с регулярным выражением на PHP

php регулярные выражения

Нужно взять лишь те ссылки, в которых нет rel="nofollow". Подскажите, сижу уже 2 часа не могу догнать (
Ниже ссылки и то что уже есть:

$links = '<a href="http://site.ru" target="_blank">seo</a>';
$links.= ', <a href="http://site.ru" target="_blank">SEO</a>';
$links.= ', <a href="http://site.ru">seo</a>';
$links.= ', <a href="http://site.ru/" target="_blank">seo</a>';
$links.= ', <a href="http://site.ru/" rel="nofollow">seo</a>';
$links.= ', <a href=http://site.ru/ rel=nofollow>sEo</a>';
$links.= ', <a href="http://site.ru/" rel=nofollow>seo</a>';
$links.= ', <a title="xxx" href="http://site.ru/" >seo</a>';
$links.= ', <a href="http://site.ru/">seo</a>';
$links.= ', <a href=\'http://site.ru/\'>seo</a>';
$links.= ', <a href="http://yandex.ru/">seo</a>';

$link = 'http://site.ru';
$ankor = 'seo';

preg_match_all('|<a.*(?:href=[\s"\']?'.$link.'\/?[\s"\']?).*>'.$ankor.'</a>|Ui', $links, $result);

Примечание:
как написал "Снег", так и сделал в настоящий момент, но это не есть хорошо

Примечание:
Что надо дописать/Как дополнить рег. выраж чтоб все работало!?
(это вопрос!)

Примечание:
OverHerz - нет, не лучше, т.к. ссылки будут выдираться из html кода страниц!
нужно именно парсером их выдирать, т.е. с минимальной нагрузкой на сервер.
Я просто в регулярках не силен. поэтому и обратился за помощью
Ответы:
попробуй вставить что-нить такое (?!text)
не есть хорошо то, как вы кодите )) это же тихий ужас...
фразы «регулярные выражения» и «с минимальной нагрузкой на сервер» являются взаимоисключающими. ругулярки надо использовать лишь когда это и правда необходимо (для поиска url в тексе, например).
можно загнать все ссылки в массив $links, и оттуда уже получить только те, у которых нет rel="nofollow"


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.