0

私は php とカササギを使用しており、フィード アイテム内の画像を検出する一般的な方法が必要です。一部の Web サイトでは、enclosure タグ内に画像を配置したり、この画像 [rss]のようなものを配置したり、単純に説明に追加したりすることがあります。RSSアイテムに画像があるかどうかを検出し、カササギによって解析された後に画像のURLを抽出するための一般的な機能を備えたものはありますか?

説明から抽出するには正規表現が必要だと思いますが、私はそれらに慣れていません。できれば助けてください。

4

1 に答える 1

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
   ...
}

画像への URL は $myRSSitem['enclosure_url'] にあり、サイズは $myRSSitem['enclosure_length'] にあります。エンクロージャ タグは多くのタイプのメディアを参照できることに注意してください。まず、$myRSSitem['enclosure_type'] をチェックして、タイプが実際にイメージかどうかを確認してください。

たぶん他の誰かがより良い提案をしており、他の空のタグから属性を取得するためにこれをよりエレガントに行うことができると確信していますが、迅速な修正 (締め切りのプレッシャー) が必要でしたが、これが他の誰かの助けになることを願っています!

于 2010-11-21T03:46:55.867 に答える