1

次のコードで名前空間 content:encoded および dc:creator の値を見つける方法 $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; ?>
4

1 に答える 1

1

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

于 2012-09-18T22:32:17.717 に答える