使用 PHP 的 HTML DomDocument 解析 RSS/Atom 提要



如何使用以下代码查找命名空间内容:编码和 dc:creator 的值不幸的是,我不能使用simplepie或magpierss,甚至simplexml。我知道我必须使用$doc->getElementsByTagName,但不知道在哪里?

<?php function rss_to_array($tags, $array, $url) { $doc = new DOMdocument(); @$doc->load($url); $rss_array = array(); foreach($tags as $tag) { if ($doc->getElementsByTagName($tag)) { foreach($doc->getElementsByTagName($tag) AS $node) { $items = array(); foreach($array AS $key => $values) { $items[$key] = array(); foreach($values as $value) { if ($itemsCheck = $node->getElementsByTagName($value)) { for( $j=0 ; $j < $itemsCheck->length; $j++ ) { if (($attribute = $itemsCheck->item($j)->nodeValue) != "") { $items[$key][] = $attribute; } else if ($attribute = $itemsCheck->item($j)->getAttribute('term')) { $items[$key][] = $attribute; } else if ($itemsCheck->item($j)->getAttribute('rel') == 'alternate') { $items[$key][] = $itemsCheck->item($j)->getAttribute('href'); } } } } } array_push($rss_array, $items); } } } return $rss_array; } $rss_item_tags = array('item', 'entry'); $rss_tags = array( 'title' => array('title'), 'description' => array('description', 'content', 'summary'), 'link' => array('link', 'feedburner'), 'category' => array('category') ); $rssfeed = rss_to_array($rss_item_tags, $rss_tags, $url); echo '<pre>'; print_r($rssfeed); echo '</pre>'; exit; ?>

对于 RSS 提要,请尝试使用 simplexml_load_file。 它从 XML 创建一个对象,并且由于所有 RSS 源都相同,因此您可以执行以下操作:

$feed = simplexml_load_file(your_rss_url_here);
for($i=0; $i < 10; $i++){
// this is assuming there are 10 pieces of content for each RSS you're loading
    $link = $feed->channel->item[$i]->link;
    // do each for pubdate, author, description, title, etc.
}

http://php.net/manual/en/book.simplexml.php

最新更新