如何在RSS feed中获取源标记

时间:2016-06-18 15:50:22

标签: php rss simplepie

请,我有一个RSS提要,需要获取每个项目的来源。我正在使用php和Samplepie。

例如RSS提要就是这样:

<?xml version='1.0' encoding='UTF-8'?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Landofcode.com web tutorials updates</title>
    <link>http://www.landofcode.com</link>
    <description>Web development tutorials</description>
    <item>
      <title>Wacky news story</title>
      <link>http://www.reddit.com/r/wacky</link>
      <description>Guy runs into a car and drives it!</description>
      <source url="http://www.reddit.com/.rss">
      reddit.com:what's new online!
      </source>
    </item>
    <item>
      <title>New HTML tutorials</title>
      <link>http://www.landofcode.com/html-tutorials/</link>
      <description>Five new HTML tutorials have been added</description>
    </item>
  </channel>
</rss>

我的代码是这样的:

 ...
   $feed->set_feed_url('http://localhost/rss/flux/rss.xml');
   $feed->init();
   $feed->handle_content_type();
    foreach ($feed->get_items() as $item){      
        echo $item->get_title();
        echo $item->get_source();
    }

但函数get_source()返回NULL 你有任何想法吗?

2 个答案:

答案 0 :(得分:0)

如果三年后有人需要解决方案,则问题是由于“ source”标签中的url属性

这不能被simplepie识别:

<source url="http://www.reddit.com/.rss">reddit.com:what's new online!</source>

这可以被简单的方式识别:

<source>reddit.com:what's new online!</source>

解决方案正在使用更通用的方法“ get_item_tags”访问“源”标签。

$sourceTags = $item->get_item_tags(NULL, "source");
$source = $sourceTags[0]['data'];
echo $source;

答案 1 :(得分:0)

要获取URL属性,请使用:

$sourceTags = $item->get_item_tags(NULL, "source");
$source = $sourceTags[0]['attribs']['']['url'];
$url = esc_url($source);