#<a[^>]*?\shref\s*=\s*[^\w]?\/?([^\s>'\"]+)[^>]*?>#ism
Я пару символов добавил и цитату :) Торопился весьма и забыл что может быть khref и убрал два слеша после https?:
Возвращайся и пополемизируем ещё :) Для меня они больная тема - в Perl-парсерах)))
Не схавает, я ещё немного поменял её)
Ну не знаю что тут сложного :)
Тут или знаешь их или не знаешь :)
Тем более что если запутаешься - можно легко написать новую за короткое время
Да и читать просто весьма
Тег начинается с a, идём до первого встреченного href, подразумеваем наличие пробелов, смотрим на присутствие нашего сайта, если нет - игнорируем любые другие сайты, потом гребём всё внутри href кроме пробелов и кавычек (тут косяк может быть если урл кривой и кавычки внутри), потом идём до конца тега
Весьма простая :) Всего один забегайчик)
Изобразил стратегический вариант)
#<a[^>]*?\shref\s*=\s*[^\w]?(https?:\/\/(www\.)?oursite\.com/)?(?!https?:)/?([^\s>'\"]+)[^>]*?>#ism
Что насчёт href= href= - множественных href в тегах - это уже конкретный изврат и форс-мажор - в данном случае эта регулярка выгребет первый href, а для конкретного случая проще будет написать специальный разборщик
jumash добавил 24.07.2009 в 09:58
Любой символ кроме >
не, такое тоже не катит - попробовал. Я в перле уже давно и привык что там как-то всё по PCRE-шному, так сказать :)
завтра допилю, спать хочется уже
Интересно прям стало
А, ну правильно
Пыха не реагирует на \1
echo "Jumash variants<hr>";preg_match_all("#<a.*?href\s*=\s*(['\"]?)(?!http:\/\/(?!(www\.)?oursite\.com))([^\s>'\"]+)(['\"]?).*?>#ism",$txt,$links);print_r($links);echo "<hr>";preg_match_all("#<a.*?href\s*=\s*(['\"]?)(?!http:\/\/(?!(www\.)?oursite\.com))(http:\/\/(www\.)?oursite.com)?([^\s>'\"]+).*?>#ism",$txt,$links);print_r($links);
Можно допилить в целом до идеала - но тут сомнительный выйгрыш будет)
http://gskinner.com/RegExr/ - тут проверял
Чуть позже в пыхе проверю
И кстати - можно как-то поадекватнее общаться? Такое чувство будто со школотой веду беседу а не с программистом.
:D Я тоже пишу без проверки, - но читаю ТС и не хвастаюсь о своей деятельности :)
Остальное, наверное, тоже надо подправить?:)
Не обольщайся. Внутренние ссылки - это не только те, что с / начинаются.
Ну и кстати конструкция <a [^>]*?href бессмысленна) Модификатор жадности и так не дойдёт до >
joost, http://www.pcre.ru/docs/php/text/stdsyntax/ - раздел Утверждения и дальше
Насчёт target=_blank - дальше две регулярки ещё которые цепляют внутренние ссылки нормально - включая ссылки с http://свойдомен