第12章 Zend_Feed

目次

12.1. 導入
12.2. フィードの読み込み
12.2.1. 独自のフィード
12.3. ウェブページからのフィードの取得
12.4. RSS フィードの使用
12.5. Atom フィードの使用
12.6. 単一の Atom エントリの処理
12.7. フィードおよびエントリの構造の変更
12.8. 独自のフィードクラスおよびエントリクラス

12.1. 導入

Zend_Feed は、RSS や Atom のフィードを扱う機能を提供します。 フィードの要素や属性、そしてエントリの属性に、自然な方法でアクセスできるようになります。 また、Zend_Feed でフィードやエントリの構造を変更し、 その結果を XML に書き戻すという拡張機能もあります。将来的には Atom Publishig Protocol (AtomPP) にも対応させる予定です。

Zend_Feed の構成は、基底クラス Zend_Feed、 フィードやエントリを扱うための基底抽象クラス Zend_Feed_Abstract および Zend_Feed_Entry_Abstract、RSS や Atom 用のフィードクラスとエントリクラスの実装、 そして自然な方法でそれらを操作するためのヘルパーから成り立っています。

以下では、RSS フィードの取得、 フィードデータの PHP 配列への変換、データの表示、 データベースへの保存などの簡単な使用例を示します。

[注意] 注意

RSS フィードによって、使用できるチャネルやアイテムのプロパティが違います。 RSS の仕様ではオプションのプロパティが多く定義されているので、 RSS データを扱うコードを書く際にはこのことに注意しましょう。

例 12.1. Zend_Feed による RSS フィードデータの使用

<?php
require_once 'Zend/Feed.php';

// 最新の Slashdot ヘッドラインを取得します
try {
    $slashdotRss = Zend_Feed::import('http://rss.slashdot.org/Slashdot/slashdot');
} catch (Zend_Feed_Exception $e) {
    // フィードの読み込みに失敗しました
    echo "フィードの読み込み中に例外が発生: {$e->getMessage()}\n";
    exit;
}

// チャネルデータの配列を初期化します
$channel = array(
    'title'       => $slashdotRss->title(),
    'link'        => $slashdotRss->link(),
    'description' => $slashdotRss->description(),
    'items'       => array()
    );

// チャネルの各項目をループし、関連するデータを保存します
foreach ($slashdotRss as $item) {
    $channel['items'][] = array(
        'title'       => $item->title(),
        'link'        => $item->link(),
        'description' => $item->description()
        );
}

?>