我似乎无法解决这个问题。我想从RSS文件(http://feeds.bbci.co.uk/news/rss.xml)获取媒体:缩略图。
我做了一些研究,并试图结合来自的见解 https://stackoverflow.com/questions/6707315/getting-xml-attribute-from-mediathumbnail-in-bbc-rss-feed 和其他来源。
这就是我得到的:
$source_link = "http://feeds.bbci.co.uk/news/rss.xml";
$source_xml = simplexml_load_file($source_link);
$namespace = "http://search.yahoo.com/mrss/";
foreach ($source_xml->channel->item as $rss) {
$title = $rss->title;
$description = $rss->description;
$link = $rss->link;
$date_raw = $rss->pubDate;
$date = date("Y-m-j G:i:s", strtotime($date_raw));
$image = $rss->attributes($namespace);
print_r($image);
}
当我运行脚本时,我看到的只是一个白页。如果我回显或print_r任何其他变量,那么它就像一个魅力。它只是造成问题的$ image。为什么这不起作用?感谢任何帮助!
答案 0 :(得分:6)
好的,它现在有效。我换了
$image = $rss->attributes($namespace);
与
$image = $rss->children($namespace)->thumbnail[1]->attributes();
$image_link = $image['url'];
它现在就像一个魅力。
答案 1 :(得分:0)
$image = $rss->attributes($namespace);
这表示“向我提供 media 命名空间中此 你想要这个: 顺便说一句,当您使用SimpleXML时,需要注意在需要元素的文本值时将SimpleXMLElements转换为字符串。 <item>
元素的所有属性”。 $firstimage = $rss->children($namespace)->thumbnail[0];
$rss->title
之类的内容是SimpleXMLElement
,而不是字符串。
答案 2 :(得分:0)
以此博客为基础,帖子标题为Processing media:thumbnail in RSS feeds with php。
我找到的解决方案最好只是将xml文件作为字符串加载,然后查找并替换“媒体:缩略图”。使用格式正确的缩略图&#39;最后使用simplexml_load_string将其转换回xml:
$xSource = 'http://feeds.bbci.co.uk/news/rss.xml';
$xsourcefile = file_get_contents( $xSource );
$xsourcefile = str_replace("media:thumbnail","thumbnail",$xsourcefile);
$xml = simplexml_load_string( $xsourcefile );
echo $row['xtitle'] . '<BR>';
foreach ($xml->channel->item as $item) {
echo ':' . $item->title . '<BR>';
echo ':' . $item->thumbnail['url'] . '<BR>';
}