PHP - Использование DOMDocument - пытается найти ссылку на канал
У меня есть функция, использующая этот фрагмент кода, и я пытаюсь выяснить, что я делаю неправильно. Я хочу найти RSS-канал веб-страницы, если он есть. На данный момент, он не возвращает URL, он показывает тип, но это все. И ключ blog_url не устанавливается в массиве. Вот код:
$results = array();
$doc = new DOMDocument();
@$doc->preserveWhiteSpace = FALSE;
$html = file_get_contents($url);
$doc->loadHTML("$html");
$links = $doc->getElementsByTagName('link');
foreach ($links as $tag) {
$type = $tag->getAttribute('type');
if (preg_match("/(rss+xml|atom+xml')/si", $type))
$href_text = $tag->nodeValue;
if(preg_match("/('feed|journal|blog')/si", $href_text))
$results['blog_url'] = $tag->getAttribute('href');
}
1 ответ
<?php
$url = ''; // EDIT THIS
$doc = new DOMDocument;
@$doc->loadHTMLFile($url);
$xpath = new DOMXPath($doc);
$nodes = $xpath->query('head/link[@rel="alternate"][@type="application/atom+xml" or @type="application/rss+xml"][@href]');
$result = array();
foreach ($nodes as $node) {
$href = $node->getAttribute('href');
if (preg_match('/(feed|journal|blog)/si', $href)) {
$result['blog_url'] = $href;
break;
}
}
print_r($result);