Содержание
Zend_Feed предназначен для работы с
лентами RSS и Atom. Он предоставляет естетственный синтаксис (natural syntax) для
доступа к элементам лент, атрибутам лент и публикаций, полностью поддерживает
изменение структуры лент и публикаций с использованием того же естетственного
синтаксиса и преобразует результаты изменений обратно в XML. В будущем эта
поддержка изменений может обеспечить добавление поддержки Atom Publishing Protocol.
Программно Zend_Feed состоит из базового класса
Zend_Feed, абстрактных базовых классов Zend_Feed_Abstract
и Zend_Feed_EntryAbstract для представления лент и публикаций,
конкретных реализаций лент и публикаций для 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 "Exception caught importing feed: {$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()
);
}
?>