Введение
RSS-лента представляет собой XML документ, основная задача которого публикация новой информации. Для чтения RSS существуют специальные программы, которые могут собирать информацию с разных источников, сортировать, фильтровать, приводить ее в удобочитаемый вид.
Наличие RSS-ленты предоставляет пользователю краткую версию публикаций ресурса, экономя его время и трафик. В статье будет рассмотрен пример генерации RSS-ленты с помощью PHP скрипта.
Структура RSS документа
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>Заголовок ленты</title>
<link>Ссылка на сайт</link>
<description>Краткое описание RSS-канала</description>
<language>Язык представленной информации</language>
<pubDate>Дата последнего генерирования RSS-канала </pubDate>
<lastBuildDate>Дата последнего обновления содержимого RSS-канала</lastBuildDate>
<copyright>Авторские права</copyright>
<webMaster>Адрес электронной почты администратора сайта</webMaster>
<image>
<url>Cсылка на картинку (логотип) GIF, JPEG или PNG </url>
<title>Описание картинки</title>
<link>Ссылка на веб-ресурс, загружающийся при клике на картинку</link>
</image>
<item>
<title>Название статьи </title>
<link>Ссылка на полную версию статьи</link>
<description>Краткое описание статьи</description>
<author>Адрес электронной почты автора статьи</author>
<pubDate>Дата публикации статьи</pubDate>
</item>
</channel>
RSS-документ можно разделить на две логические части:
Общая информация о ресурсе (заголовок, ссылка на сайт, краткая информация, дата обновления ленты, авторские права, логотип ресурса и т.д.)
Элементы ресурса: новости, статьи, рецензии и др. Элементы размещаются в теге item.
Создание RSS-ленты с помощью PHP
<?php
$RSSLenta="
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>WebPress – статьи вебмастеру</title>
<link>http://www.webpress.uz/</link>
<description>Материалы по web-программированию: HTML, CSS, JS, jQuery, PHP, MySQL </description>
<language>ru-ru</language>
";
//Запрос данных из базы
$RSSnews=QueryFromDataBases;
for ($i=1;$i<count($RSSnews);$i++){
$RSSLenta.= "
<item>
<title>{$RSSnews[$i]["title"]}</title>
<link>{$RSSnews[$i]["link"]}</link>
<description>{$RSSnews[$i]["description"]}</description>
<pubDate>{$RSSnews[$i]["date"]}</pubDate>
</item>
";
}
$RSSLenta.="
</channel>
</rss>";
//Запись RSS-ленты в файл
$file="rss.xml";
$fp = fopen($file, "w"); // "w" - создать новый файл или затереть текущий
fwrite($fp,$RSSLenta);
fclose($fp);
?>
При создании RSS-ленты учитывайте, что даты должны соответствовать стандарту RFC 822, к примеру, [Thu, 26 Jul 2012 11:44:17 GMT]. Далее приведены два примера: первый преобразует, второй получает дату в стандарте RFC 822:
Преобразование даты формата MySQL (2011-12-04 14:18:09) к стандарту RFC 822.
<?php
$d1 = explode(" ", "2011-12-04 14:18:09");
$d2 = explode("-", $d1[0]);
$d3 = explode(":", $d1[1]);
$date=date("D, d M Y H:i:s", mktime($d3[0], $d3[1], $d3[2], $d2[1], $d2[2], $d2[0])) ." GTM";
?>
Вместо GTM можно подставить временную зону: Москва +0300; Екатеринбург +0500; Иркутск +0800: и др.
$date=date("D, d M Y H:i:s", mktime($d3[0], $d3[1], $d3[2], $d2[1], $d2[2], $d2[0])) ." +0300";
Текущая дата в формате RFC 822:
$date =date("D, d M Y H:i:s")." +0300";