Чтение ленты такое же простое, как создание объекта 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 822language
-- язык, на котором написано содержимое канала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