Вот как это сделать правильно с собственными расширениями DOM
// GET file
$doc = new DOMDocument;
$doc->loadHtmlFile('http://example.com/');
// Run XPath to fetch all href attributes from a elements
$xpath = new DOMXPath($doc);
$links = $xpath->query('//a/@href');
// collect href attribute values from all DomAttr in array
$urls = array();
foreach($links as $link) {
$urls[] = $link->value;
}
print_r($urls);
Обратите внимание, что выше также будут найдены относительные ссылки. Если вы не хотите, настройте Xpath на
'//a/@href[starts-with(., "http")]'
Обратите внимание, что использование Regex для соответствия HTML - это путь к безумию. Regex сопоставляет строковые шаблоны и ничего не знает об элементах и атрибутах HTML. DOM делает, поэтому вы должны предпочесть его Regex для каждой ситуации, которая выходит за рамки совпадения с шаблонным шаблоном строки из разметки.