Рассмотрим простой пример использования регулярных выражений, а так же cURL-а, для извлечения всех ссылок с веб-страницы (либо файла). Для этих целей необходимо чтобы на вашем сервере была включена поддержка cURL, в ином случае будут использоваться функции fopen/fget/fclose. Использование cURL-а в для этих целей предпочтительнее, так как он по шустрее в работе, и способен имитировать браузер пользователя, посредством отправки HTTP заголовков, что весьма немаловажно.
Стоит обратить внимание на то, что ниже описанный код возвращает все ссылки, в том числе и ссылки на изображения, на файлы стилей и т.п.
Код:
<?php $url = 'https://href.kz'; $var = fread_url($url); preg_match_all ("/a[\s]+[^>]*?href[\s]?=[\s\"\']+". "(.*?)[\"\']+.*?>"."([^<]+|.*?)?<\/a>/", $var, &$matches); $matches = $matches[1]; $list = array(); foreach($matches as $var) { print($var."<br>"); } // Функция fread_url вернет содержимое веб-страницы // В случае, если CURL не установлен будут использованы функции fopen / fgets function fread_url($url,$ref="") { if(function_exists("curl_init")){ $ch = curl_init(); $user_agent = "Mozilla/4.0 (compatible; MSIE 5.01; ". "Windows NT 5.0)"; $ch = curl_init(); curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); curl_setopt( $ch, CURLOPT_HTTPGET, 1 ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt( $ch, CURLOPT_FOLLOWLOCATION , 1 ); curl_setopt( $ch, CURLOPT_FOLLOWLOCATION , 1 ); curl_setopt( $ch, CURLOPT_URL, $url ); curl_setopt( $ch, CURLOPT_REFERER, $ref ); curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); $html = curl_exec($ch); curl_close($ch); } else{ $hfile = fopen($url,"r"); if($hfile){ while(!feof($hfile)){ $html.=fgets($hfile,1024); } } } return $html; } ?>
Есть и другой способ получения всех ссылок на странице, для реализации которого используется класс DOMDocument. Класс DOMDocument находится в расширении DOM для PHP, начиная с версии PHP5, возможности его использования так же хорошо задокументированы в документации.