2013-09-28 1 views
0

У меня есть функция, использующая этот бит кода, и я пытаюсь выяснить, что я делаю неправильно. Я хочу найти rss-канал веб-страницы, если он есть. На данный момент он не возвращает URL-адрес, он показывает тип, но это все. И ключ blog_url не устанавливается в массиве. Вот код:PHP - Использование DOMDocument - попытка найти ссылку на канал

$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'); 
    } 

ответ

0
<?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);