Разработчику. Сборник рецептов PHP
Задавайте вопросы

Чтение RSS-рассылок

Вернуться назад

Задача

Необходимо получить RSS-рассылку и просмотреть ее содержание. Это позволит нам включить рассылку новостей с нескольких веб-сайтов в ваше приложение.

Решение

Используйте PEAR-класс XML_RSS. Приведем пример, который читает RSS-рассылку для списка почтовых адресов php.announce:

require 'XML/RSS.php';

$feed = 'http://news.php.net/group.php?group=php.announce&format=rss';

$rss =& new XML_RSS($feed);
$rss->parse();

print "<ul>\n";
foreach ($rss->getItems() as $item) {
print '<li><a href="' . $item['link'] . '">' . $item['title'] . "</a></li>\n";
}
print "</ul>\n";

Обсуждение

RSS, что означает RDF Site Summary, является простым в использовании форматом заголовков или синдикации статей, написанным на XML.(*) Многие новостные веб-сайты, такие как Slashdot и Meerkat издательства O’Reilly, предоставляют RSS-рассылки, которые обновляются при каждой публикации нового материала. Популярные сетевые издания также включают RSS, а RSS-рассылка в вашем собственном онлайн-дневнике является уже стандартной функциональностью. Веб-сайт PHP также публикует RSS-рассылки для большинства серверов почтовых рассылок PHP.

Получать и анализировать RSS-рассылку просто:


(*) RDF означает Resource Definition Framework. RSS также означает Rich Site Summary.

$feed = 'http://news.php.net/group.php?group=php.announce&format=rss';

$rss =& new XML_RSS($feed);
$rss->parse();

Этот пример присваивает переменной $rss новый объект XML_RSS и передает значение переменной feed в RSS-рассылку новостей php.announce. Затем рассылка анализируется с помощью функции XML_RSS::parse() и сохраняется в переменной $rss.

Впоследствии к элементам RSS обращаются как к ассоциативному массиву, полученному с помощью функции XML_RSS:getItems():

print "<ul>\n";

foreach ($rss->getItems() as $item) {
              print '<li><a href="' . $item['link'] . '">' . $item['title'] . "</a></li>\n";
}

print "</ul>\n";

Этот цикл foreach создает неупорядоченный список элементов ссылок на статьи так, как показано на рис.1 Помимо обязательных полей itle и link, элемент может иметь и необязательное поле description, в котором содержится краткое описание статьи.

Каждый канал также содержит вход с общей информацией о рассылке, как это показано на рис.2. Для извлечения данных используем функцию XML_RSS::getChannelInfo():

$feed = 'http://news.php.net/group.php?group=php.announce&format=rss';
$rss =& new XML_RSS($feed);

$rss->parse();

print "<ul>\n";

foreach ($rss->getChannelInfo() as $key => $value) {
       print "<li>$key: $value</li>\n";
}

print "</ul>\n";

RSS-рассылка php.announce

Рис.1. RSS-рассылка php.announce

RSS-информационный канал php.announce

Рис.2. RSS-информационный канал php.announce

Вернуться назад

Рейтинг@Mail.ru

Яндекс.Метрика

Индекс цитирования

Рейтинг Сайтов ДОСКИ.РУ