我正在构建RSS聚合器并尝试处理来自各种来源的图像。
我的大部分资源都是在内容或媒体中使用图片:RSS附件。
我设法让Simple Pie为媒体选择附件:RSS
还可以从RSS帖子的内容中删除图像。
但来自名为Silver Stripe的CMS的提要在每个帖子中都有一个原子样式的嵌入图像
表示我无法从Simple Pie中读取和提取图像。
<link rel="enclosure" type="image/JPG" href="http://example.com/image.jpg" />
我是否需要修改机箱类才能使其正常工作,或者我错过了什么,是吗
与我正在使用的命名空间有关吗?
Here is one of the feeds I am trying to get
我正在访问其他7个不同的SilverStipe网站,所有这些网站都包含相同的图片链接......
这是我当前的图片脚本:
if ($enclosures = $prPost->get_enclosures())
{
foreach ($enclosures as $enclosure)
{
$this->Fields['image'] = $enclosure->get_link();
}
}
if (preg_match('/<img.+?src="(.+?)"/', $this->Fields['desc'], $matches) && strlen($this->Fields['image']) < 5) {
$this->Fields['image'] = $matches[1];
$this->Fields['desc'] = preg_replace('/<img(.*)>/i' , "" , $this->Fields['desc'], 1);
}
答案 0 :(得分:0)
这些link
元素是item
元素的子元素:
<rss>
<channel>
...
<item>
...
<description>...</description>
<link rel="enclosure" ... />
您可以使用get_item_tags
从item
获取特定元素。
他们应位于Atom命名空间(<atom:link>
),而是保留在默认命名空间(<link>
)中,这是Feed中的错误。但是你需要解决一个问题:
$links = $item->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'link');