Извлечение ссылок из HTML-файла

Задача
Необходимо извлечь все URL, определенные в документе HTML.

Решение
Это можно сделать при помощи функции pc_link_extractor(), показанной в примере 11.2.

Пример 11.2. pc_link_extractor()
function pc_link_extractor($s) {
$a = array();
if (preg_match_all(
'/]*)[\"\']?[^>]*>(.*?)<\a>/i',
$s,$matches,PREG_SET_ORDER)) {
foreach($matches as $match) {
array_push($a,array($match[1],$match[2]));
}
}
return $a;
}

Например:
$links = pc_link_extractor($page);

Обсуждение
Функция pc_link_extractor() возвращает массив. Каждый элемент этого массива сам является двухэлементным массивом. Первый аргумент – это адрес гиперссылки, а второй аргумент – ее текст. Например:

$links=<< Click here to visit a computer book
publisher. Click over here to visit
a computer book author.
END;
$a = pc_link_extractor($links);
print_r($a);
Array
(
[0] => Array
(
[0] => http://www.oreilly.com
[1] => here
)
[1] => Array
(
[0] => http://www.sklar.com
[1] => over here
)
)

Регулярное выражение в функции pc_link_extractor() не будет работать для всех ссылок, например для тех, которые построены с помощью JavaScript, или адресов, представленных в шестнадцатеричных кодах, но оно должно функционировать для большинства корректно
отформатированных документов HTML..



Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Анализ файла протокола веб-сервера
Выделение информации на веб-странице
Извлечение содержимого URL с помощью метода POST
Использование шаблонов системы Smarty
Отладка обмена заголовками HTTP

Вернуться в раздел: PHP / 11. Автоматизация работы с Web