Чтение ленты такое же простое, как создание объекта Zend_Feed_Rss
с URI ленты:
<?php
$channel = new Zend_Feed_Rss('http://rss.example.com/channelName');
?>
Если при извлечении ленты произошла ошибка, то будет сгенерировано исключение
Zend_Feed_Exception.
Создав объект ленты, вы можете получить доступ к любым стандартным свойствам канала RSS (channel) непосредственно в объекте.
<?php echo $channel->title(); ?>
Обратите внимание на синтаксис функции. Zend_Feed использует соглашение
об интерпретации свойств как объекта XML, если они запрошены в синтаксисе
получения переменной ($obj->property и как строки, если они запрошены
в синтаксисе метода ($obj->property()). Это позволяет получить доступ
к полному тексту любого отдельного узла, что одновременно дает полный доступ
и ко всем дочерним элементам.
Если свойства канала имеют атрибуты, то к ним можно получить доступ, используя синтаксис массива PHP:
<?php echo $channel->category['domain']; ?>
Поскольку атрибуты не могут иметь дочерние записи, то нет необходимости в синтаксисе метода для получения значений атрибутов.
Весьма возможно, что вы хотите произвести обход ленты и произвести
какие-либо операции с ее публикациями. Zend_Feed_Abstract реализует
интерфейс PHP Iterator, поэтому вывод заголовков всех статей в канале будет
выглядеть следующим образом:
<?php
foreach ($channel as $item) {
echo $item->title() . "\n";
}
?>
Если вы не знакомы с RSS, то здесь приведены стандартные элементы, которые должны
присутствовать в канале (элемент <channel>) и отдельных публикациях
(элемент <item>) RSS.
Обязательные элементы канала:
title -- имя канала
link -- URL веб-сайта, соответствующего каналу
description -- одно или несколько предложений, составляющих
описание канала
Обычно используемые необязательные элементы канала:
pubDate -- дата публикации канала в формате RFC 822
language -- язык, на котором написано содержимое канала
category -- одна или несколько (задается несколькими тегами) категорий,
к которым принадлежит канал
Элементы <item> не имеют обязательных вложенных элементов.
Тем не менее, должны быть представлены <title> (заголовок) или
<description> (описание).
Обычно используемые элементы публикации
title -- заголовок публикации
link -- URL публикации
description -- краткое описание публикации
author -- e-mail автора
category -- одна или несколько категорий, к которым принадлежит
публикация
comments -- URL комментариев к данной публикации
pubDate -- дата публикации в формате RFC 822
В своем коде вы можете проверить, имеет ли элемент непустое значение, следующим образом:
<?php
if ($item->propname()) {
// ... продолжение работы
}
?>
Если вместо этого использовать $item->propname, то всегда будете
получать объект, который расценивается как TRUE, поэтому такая проверка
будет ошибочной.
За дополнительной информацией см. официальное описание спецификации RSS 2.0: http://blogs.law.harvard.edu/tech/rss