Я бы предложил использовать DOMDocument () и DOMXPath () .Это позволяет результату содержать только внешние ссылки, которые вы запрашивали.
В качестве примечания.Если вы собираетесь сканировать веб-сайты, вы, скорее всего, захотите использовать cURL , но я продолжу с file_get_contents () , поскольку именно это вы используете в этом примере.cURL позволит вам выполнять такие действия, как установка пользовательского агента, заголовков, сохранение файлов cookie и т. д., и будет выглядеть как настоящий пользователь.Некоторые веб-сайты пытаются предотвратить использование роботов.
$html = file_get_contents("http://example.com");
$doc = new DOMDocument();
@$doc -> loadHTML($html);
$xp = new DOMXPath($doc);
// Only pull back A tags with an href attribute starting with "http".
$res = $xp -> query('//a[starts-with(@href, "http")]/@href');
if ($res -> length > 0)
{
foreach ($res as $node)
{
echo "External Link: " . $node -> nodeValue . "\n";
}
}
else
echo "There were no external links found.";
/*
* Output:
* External Link: http://www.iana.org/domains/example
*/