Реклама на сайте Advertise with us

Собирание ссылок со страницы (Open Source)

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:

show me the money

С нами с 18.02.03
Сообщения: 1598
Рейтинг: 263

Ссылка на сообщениеДобавлено: 05/03/04 в 17:19       Ответить с цитатойцитата 

//

$regex = '/<a +href *= *["\']?([^"\']+)["\']? *>(.+)<\/a>/iU';

preg_match_all($regex, $page, $temp);
$links = array('url' => $temp[1], 'content' => $temp[2]);
return $links;

//

Возвращает массив где в индексе url храняться массив адресов ссылок, в индексе content - массив строк между <a></a> тегами.

Так вот, кто напишет лучше или что доработает.
Open Source топик открываю, посвящённый этой проблеме.

0
 



С нами с 12.03.03
Сообщения: 23
Рейтинг: 37

Ссылка на сообщениеДобавлено: 05/03/04 в 17:42       Ответить с цитатойцитата 

Вот еще один вариант:
---------------
preg_match_all("!<a[^>]+href=\"?'?([^ \"'>]+)\"?'?[^>]*>(.*?)</a>!is",$page,$u);
---------------
в $u[0][..]=вся ссылка
в $u[1][..]=урл ссылки
в $u[2][..]=текст ссылки

0
 



С нами с 06.07.02
Сообщения: 136
Рейтинг: 66

Ссылка на сообщениеДобавлено: 06/03/04 в 00:33       Ответить с цитатойцитата 

Saod прошел дальше, но есть замечание: пробелы могут быть между любыми элементами: a href = url >

0
 



С нами с 12.03.03
Сообщения: 23
Рейтинг: 37

Ссылка на сообщениеДобавлено: 06/03/04 в 01:06       Ответить с цитатойцитата 



Ну тогда делаем так:
----------------
preg_match_all("!<a[^>]+href *= *\"?'?([^ \"'>]+)\"?'?[^>]*>(.*?)</a>!is",$page,$u);
----------------
в $u[0][..]=вся ссылка
в $u[1][..]=урл ссылки
в $u[2][..]=текст ссылки

0
 



С нами с 25.12.03
Сообщения: 1003
Рейтинг: 462

Ссылка на сообщениеДобавлено: 06/03/04 в 01:41       Ответить с цитатойцитата 

регулярные выражения для обработки HTML слишком громоздки smail11.gif , продумать все варианты синтаксиса очень непросто. С этой целью были придуманы html parser'ы. Для perl - HTML::Parser, для php - http://codingtheweb.partners.phpclasses.org/browse.html/package/1420.html или http://php-html.sourceforge.net/
позволят вытянуть любые тэги и свойства не задумываясь о структуре и синтаксисе html документа

Sutra - лучшая система управления трафом

1
 

show me the money

С нами с 18.02.03
Сообщения: 1598
Рейтинг: 263

Ссылка на сообщениеДобавлено: 06/03/04 в 02:38       Ответить с цитатойцитата 

А разве парсер не на регулярных выражениях работает?
Как вообще можно обрабатывать такой сложный html текст без регулярных выражений.

0
 



С нами с 25.12.03
Сообщения: 1003
Рейтинг: 462

Ссылка на сообщениеДобавлено: 06/03/04 в 14:07       Ответить с цитатойцитата 


нет, нормальный парсер не использует регулярные выражения,
для этих целей используются более серьезные лексические анализаторы lex, flex, yacc icon_evil.gif

Sutra - лучшая система управления трафом

1
 

show me the money

С нами с 18.02.03
Сообщения: 1598
Рейтинг: 263

Ссылка на сообщениеДобавлено: 06/03/04 в 14:59       Ответить с цитатойцитата 

begemot писал:
clever писал:
А разве парсер не на регулярных выражениях работает?
Как вообще можно обрабатывать такой сложный html текст без регулярных выражений.

нет, нормальный парсер не использует регулярные выражения,
для этих целей используются более серьезные лексические анализаторы lex, flex, yacc icon_evil.gif

Про такие не слышал.

0
 



С нами с 06.07.02
Сообщения: 136
Рейтинг: 66

Ссылка на сообщениеДобавлено: 07/03/04 в 17:04       Ответить с цитатойцитата 

Ну, HTML::Parser грамотная вещь, но вопрос стоял как просто дернуть все ссылки и не ебать себе мозги.

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »