Cette classe sous licence GNU/GPL de ma conception permet de générer des flux RSS en version 2.0 suiavnt le modèle XML version 1.0 et encodé en UTF8.
Ci dessous un exemple d'utilisation.
Source / Exemple :
<?php
# fonction adaptée de la source ici présente:
# http://www.nexen.net/scripts/details.php%3Fscripts%3D682+php+taille+d%27un+fichier+distant&hl=fr
# permet de récupérer le type et la taille d'un fichier distant en HTTP
function GetDistantFileInfos($host , $port , $path)
{
$infos = array();
$size = -1;
$type = '';
if ($fp = fsockopen($host, $port))
{
$req = "HEAD $path HTTP/1.1\r\n";
$req .= "Host: ".$host."\r\n\r\n";
fputs($fp, $req, strlen($req));
while (!feof($fp))
{
$buffer = fgets($fp, 1024);
$split = explode(' ', $buffer);
if ($split[0] == "Content-Length:")
{
$size = (int) $split[1];
}
if ($split[0] == "Content-Type:")
{
$type = trim($split[1]);
}
}
fclose($fp);
}
$infos[0] = $type;
$infos[1] = $size;
return $infos;
}
# inclut la classe
include('class.rss20.php');
# charge une nouvelle instance
$rss = new rssChannel();
# donne un titre à la syndication
$rss->feedTitle('essai'); // obligatoire
# donne le lien vers lequel se refère cette syndication
$rss->feedLink('http://textbox.free.fr'); // obligatoire
# donne une description de cette syndication
$rss->feedDescription('essai d\'un feed rss 2.0'); // obligatoire
# le language utilisé (respect obligatoire de la norme ISO-639)
$rss->feedLanguage('fr'); // optionnel
# a qui appartiend cette publication
$rss->feedCopyright('Copyright (c)2004 LEMOINE Christophe'); // optionnel
# nombre de minutes pendant lesquels la syndication restera dans le cache du client
$rss->feedTtl(60); // optionnel
# le nom du générateur de cette syndication
$rss->feedGenerator('PHP-RSS2'); // optionnel
# adresse email de la personne chargée de l'édition
$rss->feedEditor('a@a.a'); // optionnel
# adresse email du responsable technique
$rss->feedWebmaster('a@a.a'); // optionnel
# date de publication (renseigner un timestamp)
$rss->feedPubdate(time()); // optionnel
# date de la dernière mise à jour de cette syndication
$rss->feedLastbuiltdate(time()); // optionnel
# categorie dans laquelle classer votre syndication
$rss->feedCategory('essai'); // optionnel
# logo correspondant à la syndication
$rss->feedImage('http://textbox.free.fr/IMPORTANT/Logo_GOOGLE.gif', 'le logo de google é à à &', 'http://textbox.free.fr'); // optionnel
# charge la classe de gestion des éléments
$item = new rssItem();
# initialise les valeures
$item->Clean();
# donne un titre à cet élément
$item->itemTitle('item essai'); // obligatoire
# donne une description
$item->itemDescription('description de l\'élément'); // obligatoire
# donne le lien direct vers l'élément HTML correspondant
$item->itemLink('http://textbox.free.fr/article.php?id=1'); // obligatoire
# adresse email de l'auteur de cet élément (pas le nom mais seulement l'email)
$item->itemAuthor('christophe.lemoine1@tiscali.fr'); // optionnel
# categorie en rapport avec cet élément
$item->itemCategory('essai 1');
# url de la page des commentaires
$item->itemComments('http://textbox.free.fr/article.php?id=1');
# chaine de caractère d'identification unique
$item->itemGuid((string) time());
# date de publication de cet élément
$item->itemPubdate(time());
# format XML de cet element avec son titre
$item->itemSource('http://textbox.free.fr/element.xml', 'Mon site personnel');
# ajoute un media par son url, sa taille exacte en octet et son type MIME
$media_host = 'textbox.free.fr';
$media_path = '/IMPORTANT/Logo_GOOGLE.gif';
$media_infos = GetDistantFileInfos($media_host, 80, $media_path);
$item->itemEnclosure('http://'.$media_host.$media_path, $media_infos[1], $media_infos[0]);
# met en forme l'élément et l'ajoute à la syndication
$rss->AddItem($item->Create());
# commentaires identiques pour l'élément du dessous
$item->Clean();
$item->itemTitle('item essai 2');
$item->itemDescription('description de l\'élément 2');
$item->itemLink('http://textbox.free.fr/article.php?id=2');
$rss->AddItem($item->Create());
# met en forme le flux RSS 2.0
$rss->Create();
# sauvegarde le flux dans un fichier XML (optionnel)
$rss->Save('feed.xml');
# affiche sur la fenetre du naviguateur le flux XML (optionnel)
$rss->Show();
?>
Conclusion :
Bon c'est long mais il y a plus de commentaires que de 2 codes (ou autant).
Le principe est simple, le tout c'est de ne pas jouer l'exubérant de maniere a respecter les standards.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.