RSS-лента с помощью PHP 


RSS-лента с помощью PHP

Опубликовано

 RSS-лента с помощью PHP

Введение

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";