Сделал такой вариант, т.е. через parse_url смотрю, есть ли хост, если нет - ссылка внутренняя. 100-%-ли хорош такой вариант?
num('http://site.ru');
function num($site){
$arr = parse_url($site);
$html = file_get_contents($site);
$html = mb_convert_encoding($html, 'HTML-ENTITIES', 'utf-8');
$dom = new DOMDocument();
@$dom->loadHTML($html);
$tegi = $dom->getElementsByTagName("a");
foreach ($tegi as $teg) {
$has_a = $teg->hasAttribute('href');
$get_a = $teg->getAttribute('href');
$arr_get = parse_url($get_a);
if($has_a && strlen($get_a) > 3){
if(!$arr_get['scheme'] && !$arr_get['host']){
echo $arr['scheme']."://".$arr['host'].$get_a."<br>";
}else if(!$arr_get['host']){
echo $arr['host'].$get_a."<br>";
}else{
echo $get_a."<br>";
}
}
}
}