Разработчику. Сборник рецептов PHP
Задавайте вопросы

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

Вернуться назад

Задача

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

Решение

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

Пример 11.2. pc_link_extractor()

function pc_link_extractor($s) {
     $a = array();
     if (preg_match_all(
                    '/<a\s+.*?href=[\"\']?([^\"\' >]*)[\"\']?[^>]*>(.*?)<\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=<<<END
Click <a href="http://www.oreilly.com">here</a> to visit a computer book
publisher. Click <a href="http://www.sklar.com">over here</a> 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.

Вернуться назад

Рейтинг@Mail.ru

Яндекс.Метрика

Индекс цитирования

Рейтинг Сайтов ДОСКИ.РУ