使用magpie rss从rss / atom feed中提取图像

时间:2010-08-16 05:13:15

标签: image rss extract magpie

我正在使用php和喜鹊,并希望在Feed项中检测图像的一般方法。我知道有些网站会将图片放在机柜标签中,其他网站会像images[rss]这样,有些网站会将其添加到说明中。是否有任何一个具有一般功能,用于检测rss项目是否具有图像并在被magpie解析后提取图像URL?

我认为需要从描述中提取reqular表达式,但在这些表达式中我是一个菜鸟。如果可以,请帮忙。

1 个答案:

答案 0 :(得分:5)

我花了很长时间寻找一种通过Magpie自己在RSS中显示图像的方式,最后我不得不检查代码以找出如何让它工作。

就像你说的那样,Magpie没有在元素中拾取图像的原因是因为它们是使用'enclosure'标签指定的,这是一个空标签,信息在属性中,例如。

<enclosure url="http://www.mysite.com/myphoto.jpg" length="14478" type="image/jpeg" />

作为一个让我快速完成工作的黑客,我在rss_parse.inc中添加了以下几行代码:

    function feed_start_element($p, $element, &$attrs) {
   ...
   if ( $el == 'channel' )
   {
      $this->inchannel = true;
   }
   ...

   // START EDIT - add this elseif condition to the if ($el=xxx) statement.
   // Checks if element is enclosure tag, and if so store the attribute values
   elseif ($el == 'enclosure' ) {
      if ( isset($attrs['url']) ) {
         $this->current_item['enclosure_url'] = $attrs['url'];
         $this->current_item['enclosure_type'] = $attrs['type'];
         $this->current_item['enclosure_length'] = $attrs['length'];
      }
   }
   // END EDIT
   ...
}

图片的网址在$ myRSSitem ['enclosure_url']中,大小在$ myRSSitem ['enclosure_length']中。 请注意,机箱标签可以引用多种类型的介质,因此首先通过检查$ myRSSitem ['enclosure_type']来检查该类型是否实际上是图像。

也许其他人有更好的建议,我确信这可以更优雅地从其他空标签中获取属性,但我需要快速修复(截止日期的压力),但我希望这可以帮助其他困难的人!

相关问题