【问题标题】:loading rss feed into php将 RSS 提要加载到 php 中
【发布时间】:2012-05-16 23:59:56
【问题描述】:

将 RSS 提要加载到 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 . '"/>';

    }
?>

【问题讨论】:

    标签: php rss


    【解决方案1】:

    检查一下:

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

    【讨论】:

    • 好的,谢谢,你能举个例子来打印一些文本吗,因为在我的例子中我使用了 dom 元素。
    • @ioseb:一点提示:带有%s 的printf 将使PHP 将simplexml 元素转换为字符串,因此如果您使用printf,则不需要(string) 转换;)
    • @hakre 我这样做是有原因的,这是一个非常简短的例子。为了安全起见,必须将 SimpleXMLElements 强制转换为适当的类型才能正确重用。不过,在这种特殊情况下,我同意你的看法。
    • 是否可以修改此代码以使标题成为实际帖子的链接?
    【解决方案2】:

    你可以试试这个:

    <?php
    
    $feed = simplexml_load_file('http://www.hln.be/rss.xml');
    
    print_r($feed);
    
    ?>
    

    这为您提供了可以直接使用的对象/数组结构,而不是与数据之上的附加层(即 DOM)进行通信。

    【讨论】:

    • 当我使用该代码时,我得到的唯一东西就是文本。但我仍然无法获取图像
    • 您需要单独获取图片。图像(显然还有其他媒体信息)没有嵌入 RSS 文档中。 RSS 规范仅提供指向需要获取的外部资源的链接,就像浏览器在 HTML 的情况下所做的那样。
    • 我明白,他们提供了这样的链接 static2.demorgen.be/static/photo/2012/13/10/7/20120516122633/…"> static2.demorgen.be/static/photo/2012/13/10/7/20120516122633/…" /> 但我该如何度过这个难关。我了解 img src = variable 的原理
    • 用代码示例查看我的另一个答案,抱歉最初我不明白你的问题。
    • 好的,谢谢,但现在我有以下问题。是否可以将每篇文章加载到单独的 div 类中?它是一种稍后阅读的应用程序。当您点击文章附近的按钮时,文章将被复制到另一个地方。有人知道我可以从哪里开始吗?
    猜你喜欢
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    • 2015-10-14
    • 1970-01-01
    • 2012-10-01
    • 1970-01-01
    相关资源
    最近更新 更多