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 топик открываю, посвящённый этой проблеме.
|
|
|
|
С нами с 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][..]=текст ссылки
|
|
|
|
С нами с 06.07.02
Сообщения: 136
Рейтинг: 66
|
Добавлено: 06/03/04 в 00:33 |
Saod прошел дальше, но есть замечание: пробелы могут быть между любыми элементами: a href = url >
|
|
|
|
С нами с 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][..]=текст ссылки
|
|
|
|
С нами с 25.12.03
Сообщения: 1003
Рейтинг: 462
|
Добавлено: 06/03/04 в 01:41 |
|
|
|
|
show me the money
С нами с 18.02.03
Сообщения: 1598
Рейтинг: 263
|
Добавлено: 06/03/04 в 02:38 |
А разве парсер не на регулярных выражениях работает?
Как вообще можно обрабатывать такой сложный html текст без регулярных выражений.
|
|
|
|
С нами с 25.12.03
Сообщения: 1003
Рейтинг: 462
|
Добавлено: 06/03/04 в 14:07 |
нет, нормальный парсер не использует регулярные выражения,
для этих целей используются более серьезные лексические анализаторы lex, flex, yacc
|
|
|
|
show me the money
С нами с 18.02.03
Сообщения: 1598
Рейтинг: 263
|
Добавлено: 06/03/04 в 14:59 |
begemot писал: | clever писал: | А разве парсер не на регулярных выражениях работает?
Как вообще можно обрабатывать такой сложный html текст без регулярных выражений. |
нет, нормальный парсер не использует регулярные выражения,
для этих целей используются более серьезные лексические анализаторы lex, flex, yacc |
Про такие не слышал.
|
|
|
|
С нами с 06.07.02
Сообщения: 136
Рейтинг: 66
|
Добавлено: 07/03/04 в 17:04 |
Ну, HTML::Parser грамотная вещь, но вопрос стоял как просто дернуть все ссылки и не ебать себе мозги.
|
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |