регулярные выражения, получения списка ссылок на страницы

  • Автор темы Автор темы dimants
  • Дата начала Дата начала

dimants

Новичок
регулярные выражения, получения списка ссылок на страницы

Здравствуйте
у меня следующая проблема, мне нужен скрипт, который получает список всех ссылок со страницы
страницу я получаю через сокет

фактически, мне нужно найти все ссылки на сайте, т.е. захожу на главную страницу сайта, нахожу там все ссылки, иду по ним, на этих страницах делаю то же самое, только проверяю, что такой ссылки еще нет

в общеМ, задача достаточно несложная, но я не силен в регулярных выражениях

бывает, что ссылки абсолютные, относительные, яваскрипт,mailto и т.п., как получить правильный массив абсолютных ссылок на страницы текущего сайта?

Заранее спасибо, Дмитрий
 
>задача достаточно несложная
Если так говоришь, значит наша помощь очевидно не требуется?
 
требуется:)
говорю ж, плохо у меня с регулярными выражениями:(
 
PHP:
$url = $_REQUEST["url"];
function get_links(&$body)
{
 $pattern  = "/((@import\s+[\"'`]([\w:?=@&\/#._;-]+)[\"'`];)|";
 $pattern .= "(:\s*url\s*\([\s\"'`]*([\w:?=@&\/#._;-]+)";
 $pattern .= "([\s\"'`]*\))|<[^>]*\s+(src|href|url)\=[\s\"'`]*";
 $pattern .= "([\w:?=@&\/#._;-]+)[\s\"'`]*[^>]*>))/i";
 preg_match_all($pattern,$body,$matches);
 return (is_array($matches))?$matches:FALSE;
}
/* $matches[3] содержит ссылки Javascript, $matches[5] ссылки CSS, и $matches[8] содержит обычные URL/SRC/HREF HTML ссылки. Чтобы получить их все в один массив используйте x_array_merge() */
function x_array_merge($arr1,$arr2)
{
 for($i=0;$i<count($arr1);$i++) {$arr[$i]= ($arr1[$i] == '')?$arr2[$i]:$arr1[$i];}
 return $arr;
}
$body = @file_get_contents($url);
$heap = get_links($body);
$links = x_array_merge($heap[3],x_array_merge($heap[5],$heap[8]));
var_dump($links);
url = http://phpclub.ru:
PHP:
...
 string(7) "?m=news"
  [12]=>
  string(10) "?m=article"
  [13]=>
  string(6) "?m=app"
  [14]=>
  string(6) "?m=faq"
  [15]=>
  string(7) "?m=talk"
  [16]=>
  string(6) "?m=job"
  [17]=>
  string(8) "?m=about"
  [18]=>
  string(7) "?m=book"
...
 
Сверху