我想从RSS提要中获取帖子缩略图,但是代码不包含图像。
它看起来像:
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
<channel>
<title></title>
<link></link>
<description>Main feed</description>
<language>is-IS</language>
<pubDate>Wed, 27 Jun 2018 02:47:24 GMT</pubDate>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<ttl>100</ttl>
<generator>RSS</generator>
<item>
<title></title>
<description>
<![CDATA[
]]>
</description>
<link></link>
<guid/>
<pubDate>Tue, 26 Jun 2018 12:00:00 GMT</pubDate>
</item>
</channel>
</rss>
是否可以获取图像?它们以缩略图的形式出现在新闻页面上。
答案 0 :(得分:0)
但是您尚未发布代码,简单代码将如下所示: 如有任何疑问,请询问
php文件
<?php
$xml =simplexml_load_file('read.xml');
echo $xml->channel->title;
echo '<br/>';
echo $xml->channel->link;
?>
xml文件(只是增加了一些内容而已更改)
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
<channel>
<title>title is here</title>
<link>link is here</link>
<description>Main feed</description>
<language>is-IS</language>
<pubDate>Wed, 27 Jun 2018 02:47:24 GMT</pubDate>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<ttl>100</ttl>
<generator>RSS</generator>
<item>
<title></title>
<description>
<![CDATA[
]]>
</description>
<link></link>
<guid/>
<pubDate>Tue, 26 Jun 2018 12:00:00 GMT</pubDate>
</item>
</channel>
答案 1 :(得分:0)
如果您想获取帖子的图片,我们可以这样做-假定帖子的内容/正文中有图片。这就是我要做的。
我创建了一个程序包来使xml解析变得轻而易举。您可以在这里找到它:https://github.com/mtownsend5512/xml-to-array
然后执行以下操作:
$xml = \Mtownsend\XmlToArray\XmlToArray::convert(file_get_contents('https://www.yourrssfeed.com'));
现在您有了一个很好的rss feed的php数组。
接下来,我们将创建一个辅助函数,以从帖子的正文中获取第一张图片。我们将其用作帖子的特色图片。
function getPostImage($content)
{
$output = preg_match_all('/<img[^>]+src=[\'"]([^\'"]+)[\'"][^>]*>/i', $content, $matches);
if (empty($matches[1][0])) {
return 'http://yoursite.com/images/fallback-image.jpg';
}
return $matches[1][0];
}
如果帖子中没有图片,您将用后备图片的网址替换http://yoursite.com/images/fallback-image.jpg
。
现在,我们遍历帖子:
foreach ($xml['channel']['item'] as $post) {
$title = $post['title']);
$link = $post['link'];
$description = $post['description'];
$pubDate = $post['pubDate'];
$image = getPostImage($post["content:encoded"]);
}
希望有帮助。