Заметки
Извлечение всех ссылок URL на странице
Иногда бывает нужно загрузить HTML-страницу и извлечь из неё все ссылки из тэгов <a href=...> Для этого воспользуемся функцией preg_match_all($rgexp, $str, $matches); которая извлекает из строки $str все подстроки, удовлетворяющие заданному регулярному выражению $regexp и помещает все найденные варианты в массив $matches .
<?php
$str = file_get_contents("http://someserver.com/");
preg_match_all("|<a\s[^>]*href=[\"']?([^>\"'#\s]+)[\"']?[^>]*>|is", $str, $matches);
foreach($matches[1] as $line)
echo $line."<br/>\n";
?>
Главное здесь — правильно составить регулярное выражение, которому будут соответствовать только правильные URL-адреса. Не будем особо вдаваться в подробности работы регулярных выражений, им посвящены целые книги. Хотя если вы раньше составляли регулярные выражения в скриптах на Perl, можно напрямую перенести их в функцию preg_match_all , потому что она понимает Perl-выражения.
Итак, приведённый выше скрипт считывает в переменную $str целевой HTML-файл (это может быть URL-адрес документа или путь файла на диске). Потом отработает функция поиска и на выходе мы получим массив $matches удовлетворяющих выражению подстрок. С помощью конструкции foreach выведем все найденные URL на экран. Обратите внимание, что массив найденных подстрок будет находиться в массиве $matches[1] .
|