2012-05-16 106 views
2

将RSS feed加载到PHP feed中的最佳方式是什么?将rss feed加载到php

我也想处理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(' & ', ' &amp; ', $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 . '"/>'; 

    } 
?> 

回答

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

?> 
+0

好的谢谢你,请你举个例子来打印一些文字,因为在我的例子中我使用了dom元素。 – Niels

+0

查看代码更新 – ioseb

+1

@ioseb:有点提示:带有'%s'的printf将使PHP将simplexml元素转换为字符串,所以如果您使用printf,则不需要'(string)'类型转换;) – hakre

0

可以尝试这样:

<?php 

$feed = simplexml_load_file('http://www.hln.be/rss.xml'); 

print_r($feed); 

?> 

这给你对象,它可以代替直接使用与所述数据的顶部附加层通信的/阵列结构(即DOM)。

+0

当我使用的代码,我得到的唯一的事情就是文字。但我仍然无法访问图像 – Niels

+0

您需要单独获取图像。图像(以及其他媒体信息)不会嵌入到RSS文档中。 RSS规范只提供外部资源的链接,这些外部资源需要像HTML一样在浏览器中提取。 – ioseb

+0

据我所知,他们提供了这样的链接 但如何我是否得到槽这个。我了解img src =变量 – Niels