- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Слишком мало условий.
href='
href=
тем более может пожадничать и начать с первого a на странице и пройти до последнего href
В дополнение к своему посту:
Т.е. задачу я бы поставил так, найти все ссылки (вытащить url-ы) и анкоры в коде html, т.е. обрабатывать такие вещи:
<a href="url">анкор</a>
<a href='url'>анкор</a>
<a href=url>анкор</a> - url может быть путём с пробелами, но брать тогда нужно то, что до пробела.
<a opthref=ggg href=url target=blank>анкор</a> - т.е. наличие других параметров не должно мешать выборке url-ов
А если идти дальше, то тогда выборку вообще стоит разбить на две:
1. Поиск все ссылок с анкорами в валидных <a></a>, где параметр href указан в кавычках.
2. Поиск все ссылок без кавычек и помечать их как невалидные!
А дальше, кому нужно пущай с двумя массивами работает и делает то, что требуется. Можно и url и анкоры анализировать и т.п. Достаточно универсальная была бы регулярка или даже две. Пусть две регулярки, но главное, чтобы были попроще ;)
Отдельная выборка невалидных ссылок позволит потом пропарсить сайт и исправить их. Всё-таки нужно стремиться к правильному коду HTML.
Нашёл, что-то интересное (http://forum.php.su/topic.php?forum=4&topic=112):
меня видимо уже игнорируют на этом форуме ..
вот самая правильная в смысле поиска и послед анализа регулярка. поверьте я делал например вот такую штуку http://seopro.com.au/free-seo-tools/link-checker/
вот регулярка на поиск ВСЕХ ССЫЛОК
preg_match_all('#<a[^>]*? href\s*=\s*(\S+?)[>\s]#ism',$txt,$links);меня видимо уже игнорируют...
Кто здесь?
p.s. Вас я уже запомнил ;) и записываю в блокнотик:
регурярка для поиска всех ссылок: preg_match_all('#<a[^>]*? href\s*=\s*(\S+?)[>\s]#ism', $txt, $links);
--
А выборка всех ссылок и анкоров до кучи, вот так?
preg_match_all('#<a[^>]*? href\s*=\s*(\S+?)[>](.*)<\/a>#ism', $txt, $links);
Наверное, есть ошипка, поправьте если что.
И похоже вот такую ссылку не словит ваша регулярка, <a href="http://site.ru/dir to file/index.php">
вроде как вытащит только http://site.ru/dir
DyaDya, спасибо =))
она вернет результаты с КАВЫЧКАМИ. можно и от кавычек почистить, но мне и так хорошо, предпочитаю и ручками поработать немножко) зато она не монстроузная
Да, проверил, так и есть,
вроде как вытащит только http://site.ru/dir
Нашёл, офигительную регулярку
preg_match_all('#<(a|area)(\s+?[^>]*?\s+?|\s+?)href\s*=\s*(["\'`]*)\s*?([^>\s]+)\s*\3[^>]*?(/>|>(.*?)</\1>|>)#is', $txt, $links, PREG_SET_ORDER);
Сами ссылки как и у вас находит до пробела, но до кучи ещё и сами анкоры все вытаскивает.
И там же тоже работает:
Проверил, работает!
засада номер 2
<textarea><a href="ссылка">sddd</a></textarea><xmp><a href="ссылка">sddd</a></xmp>
это к слову о том что всео не предусмотришь
засада номер 2
<textarea><a href="ссылка">sddd</a></textarea><xmp><a href="ссылка">sddd</a></xmp>
это к слову о том что всео не предусмотришь
☝ это точно!
Но если вам не нужны какие то блоки и вложенности тегов при анализе, то их можно предварительно удалить другой регуляркой!
bearman,
?DyaDya,
вроде как вытащит только http://site.ru/dir
а эта ссылка в принципе невалидна, я думаю что некоторые браузеры даже оттрактовать ее не смогут, хотя может я ошибаюсь)
bearman добавил 24.07.2009 в 23:57
toxic steel, .*? dyfчале замените на [^>]+?. на вопрос зачем - найдете ответы выше, не хочется в пятый раз переписывать статью)