2012-09-18 46 views
1

如何使用以下代碼找到命名空間內容的值:encoded和dc:creator 不幸的是我不能使用simplepie或magpierss甚至simplexml。 我知道我必須使用$ doc-> getElementsByTagName,但無法弄清楚哪裏? 使用PHP的HTML DomDocument解析RSS/Atom提要

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

你能和你的確切XML更新....那會之前有幫助 – Baba

回答

2

對於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