请,我有一个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 你有任何想法吗?
答案 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);