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

dimants

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

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

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

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

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

Заранее спасибо, Дмитрий
 

sakon

П..и.н..ок
>задача достаточно несложная
Если так говоришь, значит наша помощь очевидно не требуется?
 

dimants

Новичок
требуется:)
говорю ж, плохо у меня с регулярными выражениями:(
 

white phoenix

Новичок
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"
...
 
Сверху