FoxWeb

софт для студентов
Искать здесь

Извлечение всех ссылок URL на странице

Раздел: PHP, MySQL, веб-программирование Автор: foxweb
E-mail: спаму - нет! Www: http://foxweb.net.ru
Просмотров: 1817 Дата: 13.02.2007
Рассматривается небольшой скрипт, с помощью которого можно извлечь все URL-адреса на странице.

Иногда бывает нужно загрузить HTML-страницу и извлечь из неё все ссылки из тэгов <a href=...> Для этого воспользуемся функцией preg_match_all($rgexp, $str, $matches); которая извлекает из строки $str все подстроки, удовлетворяющие заданному регулярному выражению $regexp и помещает все найденные варианты в массив $mathces.

<html>
<head>
<title>Извлечённые URL</title>
</head>
<body>
<?php
$str 
file_get_contents("http://foxweb.net.ru/");
preg_match_all("!<a[^>]*\shref=[\"']?([^>\"'#\s]+)[\"']?[^>]*>!is",$str,$matches);
echo 
"<pre>";
foreach(
$matches[1] as $line)
echo 
"$line\n";
echo 
"</pre>";
?>
</body>
</html>

Главное здесь — правильно составить регулярное выражение, которому будут соответствовать только правильные URL-адреса. Не будем особо вдаваться в подробности работы регулярных выражений, им посвящены целые книги. Хотя если вы раньше составляли регулярные выражения в скриптах на Perl, можно напрямую перенести их в функцию preg_match_all, потому что она понимает перл-выражения.

Итак, приведённый выше скрипт считывает в переменную $str целевой HTML-файл (это может быть URL-адрес документа или путь файла на диске). Потом отработает функция поиска и на выходе мы получим массив $macthes удовлетворяющих выражению подстрок. С помощью конструкции foreach выведем все найденные URL на экран. Обратите внимание, что массив найденных подстрок будет находиться в массиве $mathes[1]. Подробности смотрите в документации к функции preg_match_all().

Комментарии

Раиса 04.03.2008 17:20:30 #
У меня есть страничка со скриптом по которому организовываются динамические ссылки. Как организовать их извлечение? raya77@tut.by

Оставить комментарий

Ваше имя

Ваш комментарий

Код   Защитный код. Если вы не видите здесь рисунок - обновите страницу.
Оценка   

Заметки по этой теме