RSS (really simple syndication) был разработан фирмой netscape и представляет собой расширение xml созданное специально для оформления новостных лент. На сегодняшний день формат пережил уже 2-ю редакцию и является общепринятым стандартом для разметки новостей.
<item> <title>rss - вкусные новости </title> <link>http://riscom.com/~none/</link> <description>Что такое rss и с чем его едят</description> </item>
</rss>
Структура достаточно наглядна и понятна.
Два общих блока (channel и image), применяемых к целому документу и блок(и) item, содержащий сами новости.
Блок channel определяет источник новостей:
title - имя сайта; description - описание; link - адрес Блок image - графическое отображение сайта:
title - название; link - адрес картинки; width, height - ширина и высота. Блоков item может быть сколько угодно и в них описываются сами новости:
title - заголовок; link - адрес самой новости; description - описание. Всё, что находится выше тэга rss называется заголовком документа и применяется к любому xml документу, конечно же с соответствующими корректировками.
Теперь, после того, как мы научились создавать rss документ, давайте подумаем, что нам со всем этим добром делать.
Первая, и самая лёгкая идея, это, конечно же, ничего с ним не делать, просто создать процедурину автоматической генерации rss из любой публикуемой новости и забыть о нём. Дескать, пускай те, кому это нужно, сами парсят его. Но, предположим, что у нас есть некоторый ресурс, на котором мы хотим публиковать новости всем известного сайта www.ionpopescu.md, а господин popescu ни в какую не хочет предоставлять их (новости), в каком либо другом формате кроме как в rss. Что нам остаётся? Правильно! Будем парсить. Здесь, опять же, есть два выхода: первый - воспользоваться всеми известными парсерами xml типа sablotron и не морочить себе голову, второй - морочить. У второго варианта есть и ещё одно оправдание, представьте что вы пользуетесь каким-нибудь бесплатным хостингом, и хостер ну ни в какую не хочет устанавливать у себя sablotron или его аналоги.
---------------------------------------------------- И сам скрипт:
<?php
function startelement($parser, $name, $attrs) { global $tag, $rss; if ($name == rss) $rss = ^rss; elseif ($name == rdf:rdf) $rss = ^rdf:rdf;
$tag .= ^ . $name; }
function endelement($parser, $name) { global $tag; global $itemcount, $items; if ($name == item) { $itemcount++; if (!isset($items[$itemcount])) $items[$itemcount] = array(title => , link => , desc => , pubdate => ); }
$tag = substr($tag, 0, strrpos($tag, ^)); }
function characterdata($parser, $data) { global $tag, $chantitle, $chanlink, $chandesc, $rss, $imgtitle, $imglink, $imgurl; global $items, $itemcount;