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

Порыскал по гуглу. На серченгинсе нашел очень неплохой граббер:

function correct_link($home_link,$link) {
if (!preg_match(”#^http://#”,$link)) {
$strip_link = preg_replace(”#\?.*?$#”,”",$home_link);
$home_link = preg_replace(”#^(.*/).*?$#”,”\\1″,$home_link);
preg_match(”#^(?:http://)?(.*?)/(.*)/?.*?$#”,$home_link,$match);
if ($link{0} == “?”) {
$link = $strip_link.$link;
}
$link = preg_replace(”#/.*//#is”,”/”,”/”.$match[2].$link);
$path = array();
$pathA = explode(’/', $link);
if (!$pathA[0])
$path[] = ”;
foreach ($pathA AS $key => $dir) {
if ($dir == ‘..’) {
if (end($result) == ‘..’) {
$path[] = ‘..’;
} elseif (!array_pop($path)) {
$path[] = ‘..’;
}
} elseif ($dir && $dir != ‘.’) {
$path[] = $dir;
}
}
if (!end($pathA))
$result[] = ”;
$path = implode(’/', $path);
$link = “http://”.$match[1].$path;
}
return $link;
}

$url = “http://jeck.ws/”;
$page = file_get_contents($url);

preg_match_all(”‘<\s*a\s.*?href\s*=\s*([\"\'])?(?(1) (.*?)\\1 | ([^\s\>]+))’isx”,$page,$links);
$links = $links[2];

foreach ($links as $n => $link) {
$links[$n] = correct_link($url,$link);
}

$links = array_values(array_unique($links));

Вот тут