このコードを使用して、HTMl コンテンツからすべての URL リンクを分離しています
$doc = new DOMDocument();
$doc->loadHTML($string);
$anchorTags = $doc->getElementsByTagName('a');
$links = array();
foreach ($anchorTags as $url) {
$source = parse_url($url->getAttribute('href'));
$source = preg_replace('/^www\./', '', $source['host']);
$links[$source][$url->getAttribute('href')] = $url->nodeValue;
}
上記のコードで出力します。
Array
(
[Facebook] => Array
(
[facebook.com] => https://www.facebook.com/
)
[Google] => Array
(
[google.com] => https://www.google.com/
)
[] => Array
(
[] =>
)
[yahoo] => Array
(
[yahoo.com] => https://www.yahoo.com/
)
)
このために配列からnull/空白の要素/インデックス/キーを削除したいだけです。私はarray_filter()を使用しています。
しかし、解決には至りません。
print_r(array_filter($links));