Опять регулярные выражения

12
[Удален]
#11

Да, мой косяк, точно.

Большущее прибольшущее спасибо всем вам! Вы лучшие!

Опять что то не правильно :(

если ссылки так расположить:

<a href="site1.ru" alt=Вася пупкин ><a class="" href=\'site2.ru\' alt=Вася пупкин ><a href=site3.ru alt=Вася пупкин ><a href=" site4.ru " alt=Вася пупкин >

тогда неверно выдает результат

когда каждая ссылка с новой строки и без ключа U то да это работает а если в одну строку то нет

gormarket
На сайте с 29.12.2010
Offline
47
#12

PROGRAMMATOR, Ваш вариант выдергивает ссылки не только из тега "а", но и из тега "link", например

<link rel="icon" href="favicon.ico" type="image/x-icon" />

SeoSkunk, если базовым является site.ru, и работаем на PHP, то все ссылки с site.ru можно выбрать так:


if(preg_match_all('#<a[^>]*href=["\' ]*([^>]*site.ru[^>\'"]*)["\' ]*[^>]*>#i',$content,$match)){
print '<pre>';
print_r ($match[1]);
print '</pre>';
}

а если хотите выбрать все ссылки, а не только на site.ru, то так:


if(preg_match_all('#<a[^>]*href=["\' ]*(https?://[^>\s\'"]{4,80})[^>\'"]*["\' ]*[^>]*>#i',$content,$match)){
print '<pre>';
print_r ($match[1]);
print '</pre>';
}

gormarket добавил 30.03.2011 в 09:56

Я вчера был не совсем прав:

пытался "быстренько допилить" заготовку, ранее написанную для других целей, и не учел, что могут быть еще и относительные ссылки

Так что мой последний вариант такой:


if(preg_match_all('#<a[^>]*href=["\'\s]*([^>"\'\s]+)["\'\s]*[^>]*>#i',$content,$match)){
print '<pre>';
print_r ($match[1]);
print '</pre>';
}
Товары и цены в магазинах Вашего города: Городской рынок (http://gormarket.ru/)
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий