第 18 章 Zend_Feed

目录

18.1. 介绍
18.2. 导入Feeds
18.2.1. 定制 feeds
18.2.1.1. 导入定制的数组
18.2.1.2. 导入定制的数据源
18.2.1.3. Dumping feed 内容
18.3. 从网页上获得Feed
18.4. RSS Feed的使用
18.5. Atom Feed的使用
18.6. 单个Atom条目的处理
18.7. 修改Feed和条目结构
18.8. 自定义Feed和条目类

18.1. 介绍

Zend_Feed提供了处理的 RSS 和 Atom Feed的功能。它提供了一套自然的方法用于 访问Feed元素、属性、和条目属性。 除此之外Zend_Feed还扩展提供了同样简单的方法 用于修改feed和条目的结构,并将结果转化成XML格式。不久的将来这些扩展可能会被 Atom Publishig Protocol(AtomPP)所支持。

Zend_Feed由一个Zend_Feed基类、一个Zend_Feed_Abstract抽象类以及一个用于表示Feed和条目的Zend_Feed_Entry_Abstract基类组成。这些类封装了 RSS 和 Atom 的feed和条目特性的,提供了一套自然的方法使他们用起来变得异常简单。

在下面的例子中,我们示范了一个获得一个RSS feed并将其中的一般部分相关数据保存到一个PHP数组中的简单实例,这样这些数据就能方便的用于输出、保存到数据库等等。

[注意] Be aware

许多RSS中的channel和item属性是不同的。RSS的规范中提供了许多可选的属性,因此在编写RSS相关应用代码时要充分考虑这点。

例 18.1. 用Zend_Feed来处理RSS Feed数据

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

// 取得最新的 Slashdot 头条新闻
try {
    $slashdotRss = Zend_Feed::import('http://rss.slashdot.org/Slashdot/slashdot');
} catch (Zend_Feed_Exception $e) {
    // feed 导入失败
    echo "Exception caught importing feed: {$e->getMessage()}\n";
    exit;
}

// 初始化保存 channel 数据的数组
$channel = array(
    'title'       => $slashdotRss->title(),
    'link'        => $slashdotRss->link(),
    'description' => $slashdotRss->description(),
    'items'       => array()
    );

// 循环获得channel的item并存储到相关数组中
foreach ($slashdotRss as $item) {
    $channel['items'][] = array(
        'title'       => $item->title(),
        'link'        => $item->link(),
        'description' => $item->description()
        );
}