将RSS Feed加载到PHP Feed中的最佳方法是什么?
我还想处理media:content
问题以显示图像。
此刻我有以下代码,但我不知道这是否是最好的。
<?php
$rss = new DOMDocument();
$rss->load('http://www.hln.be/rss.xml');
$feed = array();
foreach ($rss->getElementsByTagName('item') as $node) {
$item = array (
'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
'desc' => $node->getElementsByTagName('description')->item(0)->nodeValue,
'link' => $node->getElementsByTagName('link')->item(0)->nodeValue,
'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue,
'media' => $node->getElementsByTagName('media:content url')->item(0)->nodeValue,
);
array_push($feed, $item);
}
$limit = 20;
for($x=0;$x<$limit;$x++) {
$title = str_replace(' & ', ' & ', $feed[$x]['title']);
$link = $feed[$x]['link'];
$description = $feed[$x]['desc'];
$date = date('l F d, Y', strtotime($feed[$x]['date']));
$image = $feed[$x]['media'];
echo '<p><strong><a href="'.$link.'" title="'.$title.'">'.$title.'</a></strong><br />';
echo '<small><em>Posted on '.$date.'</em></small></p>';
echo '<p>'.$description.'</p>';
echo '<img src="' . $image . '"/>';
}
?>
答案 0 :(得分:8)
检查一下:
<?php
$feed = simplexml_load_file('http://www.hln.be/rss.xml');
foreach ($feed->channel->item as $item) {
$title = (string) $item->title;
$description = (string) $item->description;
print '<div>';
printf(
'<h2>%s</h2><p>%s</p>',
$title,
$description
);
if ($media = $item->children('media', TRUE)) {
if ($media->content->thumbnail) {
$attributes = $media->content->thumbnail->attributes();
$imgsrc = (string)$attributes['url'];
printf('<div><img src="%s" alt="" /></div>', $imgsrc);
}
}
echo '</div>';
}
?>
答案 1 :(得分:0)
你可以试试这个:
<?php
$feed = simplexml_load_file('http://www.hln.be/rss.xml');
print_r($feed);
?>
这为您提供了对象/数组结构,您可以直接使用它,而不是在数据之上与附加层(即DOM)进行通信。