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


Автор: teslitsky 18.5.2008, 11:15
Добрый день. Гуру, нужна ваша помощь в написании регулярки.
Со страницы http://www.articlesfactory.com/articles/finance.html нужно найти только урлы вида http://www.articlesfactory.com/articles/finance/.
Для нахождения всех ссылок использую 
Код
preg_match_all("/(http:\/\/(:?[^\"]*))/i", $data, $links);

но не знаю как туда добавить условие "только http://www.articlesfactory.com/articles/finance/ ". Искал на форумах, не нашел. Заранее благодарен за ответы.

Автор: amg 19.5.2008, 13:41
Код

preg_match_all('|http://www.articlesfactory.com/articles/finance/[^\s"]*|i', $data, $links);
for ($i=0;$i<count($links[0]);$i++) echo $links[0][$i]."\n";


Автор: teslitsky 19.5.2008, 21:32
Большое спасибо, все работает!

Автор: teslitsky 21.5.2008, 18:53
Извините за дерзость, созрел еще один вопрос: что нужно добавить, чтобы исключить ссылки типа http://www.articlesfactory.com/articles/finance/pagex, где x - число.

Автор: amg 22.5.2008, 08:55
Код
'|http://www.articlesfactory.com/articles/finance/(?!page\d)[^\s"]*|i'

Автор: teslitsky 22.5.2008, 15:03
Спасибо. А возможно ли в регулярку добавить условие для уникальности ссылки? При парсинге получается всех ссылок по две. Пробовал 
Код
preg_match_all('|http://www.articlesfactory.com/articles/finance/(?!page\d)[^\s"]*|i', $data, $links);
$result=array_unique($links[0]);
, но на выходе получил Array.

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