0

我正在使用 php 和 magpie,并且想要一种检测提要项目中图像的通用方法。我知道有些网站将图片放在附件标签中,有些则喜欢这个图片[rss],有些只是将其添加到描述中。是否有任何具有通用功能的检测rss项目是否有图像并在它被magpie解析后提取图像url?

我认为从描述中提取需要正则表达式,但我不擅长这些。如果可以的话请帮忙。

4

1 回答 1

5

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

就像你说的那样,喜鹊没有在元素中拾取图像的原因是因为它们是使用'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
   ...
}

图片的 url 在 $myRSSitem['enclosure_url'] 中,大小在 $myRSSitem['enclosure_length'] 中。请注意,附件标签可以引用多种类型的媒体,因此首先通过检查 $myRSSitem['enclosure_type'] 来检查类型是否实际上是图像。

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

于 2010-11-21T03:46:55.867 回答