Easy-Micro

ESPACEMEMBRE XML
Flux RSS

Les flux RSS

Pré-requis: avoir lu le tutorial sur le RSS!

Les flux RSS (des fichiers XML) sont des sortes de bases de données sous forme d'un fichier texte avec une norme d'écriture commune : le RSS.
Il existe toute une série de logiciels qui permettent de les utiliser mais ce qui nous intésse plus particulièrement ici est de les utiliser dans une page web.

Le standard RSS
Un flux RSS est un simple fichier texte contenant des informations structurées au format XML, permettant de décrire de façon fine le contenu du canal et de chacun des items qui le constituent. Il existe plusieurs versions du standard RSS :

• RSS 0.91 (Rich Site Summary) représente une évolution mineure des spécifications de format RSS originel mis au point par la société Netscape.
• RSS 1.0 (RDF Site Summary) est une spécification alternative, issue du standard RDF.
• RSS 2.0 (Really Simple Syndication) est une amélioration du standard RSS 0.91, mise au point par Dave Winer.

Nous utiliserons ici comme base d'exercice un exemple réalisé par le magazine Clubic.

Exemple de fichier XML (monrss.xml)
<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="monstyle.xsl"?>
<rss version="2.0">
<channel>
<title>Easy-Micro [ NEWS ]</title>
<link>http://www.easy-micro.org/</link>
<description>Easy-Micro est un support de cours informatique dédié à la création de sites Internet, conçu par François Bisch, analyste programmeur et formateur informatique pour entreprises.</description>
<language>fr</language>

<item>
<title>[Tutoriaux] Blog et RSS</title>
<description>
Comprendre le phénomène Blog (ou Weblog) et son interaction avec le langage RSS.
</description>
<guid>
http://www.easy-micro.org/tutoriaux/langage/blog.php </guid>
</item>

<item>
<title>[Espace Membres] Insérer un flux XML</title>
<description>
Comment insérer un flux XML sur son site web.
</description>
<guid>
http://www.easy-micro.org/contact/inscription.php
</guid>
</item>

</channel>
</rss>


Utilisation basique
Pour une utilisation basique et pour des sites de petite taille (avec peu de visiteurs), une solution basique s'offre à vous. Son avantage est qu'elle est très facile à mettre en place. Son inconvènient est qu'elle n'est pas très douce avec les ressources du serveur d'hébergement (ni avec le serveur d'Easy-Micro). En effet, elle va chercher les informations à chaque chargement de la page, ce qui n'est pas sans provoquer des ralentissements aux heures d'affluence.

Voici un exemple de code PHP utilisable pour une telle insertion :
<?php
// On récupère le fichier XML
$fichier_xml = "monrss.xml";
$nombre_limite = 5; // Nombre maximum d'éléments à afficher

// Lecture du fichier XML
$file = fopen($fichier_xml,"r");
if ($file) {
$raw = fread($file,32000);
fclose( $file );

// Recherche des noeuds XML
if(eregi("<item>(.*)</item>",$raw,$rawitems)){
$items = explode("<item>", $rawitems[0]);
$nb = count($items);
$maximum = (($nb-1) < $nombre_limite) ? ($nb-1) : $nombre_limite;

// Affichage des noeuds XML
for ($i=0;$i<$maximum;$i++) {
eregi("<title>(.*)</title>",$items[$i+1], $title);*
eregi("<link>(.*)</link>",$items[$i+1], $link);
echo "- <a href=\"".$link[1]."\" target=\"_blank\">".$title[1]."</a><br />";
}
}
}
?>

La fonction utilisée ci-dessus eregi est identique à la fonction ereg, hormis le fait qu'elle ignore la casse des caractères lors de la recherche sur les caractères alphabétiques. Elle permet de rechercher dans une chaîne les séquences de caractères qui correspondent au masque, en tenant compte de la casse. Si au moins une sèquence est trouvée les résultats seront enregistrés dans un troisième argument (identique à ereg_replace ou preg_replace).

Comme vous pouvez le remarquer, nous n'affichons que le titre et nous passons outre la date et d'autres renseignements utilisables. Vous pouvez bien évidemment modifier ce script pour l'adapter à ce que vous souhaitez afficher. Cela donne le résultat visible ici !

Utilisation standard
Afin d'exploiter un fil RSS proposé par un site, il est nécessaire de disposer d'un outil capable d'analyser le XML (un parseur XML) afin de le convertir en XML. Il existe un grand nombre d'outils dans la plupart des langages permettant d'exploiter facilement des canaux RSS. L'outil MagPieRSS (http://magpierss.sourceforge.net/) permet par exemple de parser les fils RSS, quelle que soit la version du standard utilisée, avec un simple script en langage PHP.

Pour utiliser ce composant, voici un rapide tour d'horizon :
- Télécharger le composant sur son site officiel
- Le décompresser dans un répertoire de son site web (par exemple dans un répertoire "magpierss" situé à la racine du site)
- Créer un répertoire cache accessible en lecture et en écriture par le serveur web (en mettant une authorisation 777 par exemple). Par défaut, celui ci s'appelle "cache".

Pour l'utiliser ensuite, il suffit d'insérer ce bout de code dans vos pages:
<?php
// Chemin pour accéder au fichier rss_fetch.inc
require_once 'magpierss/rss_fetch.inc';

// Adresse du flux XML
$fichier_xml = "http://www.clubic.com/c/xml.php?type=news";

$rss = fetch_rss($fichier_xml);

echo $rss->channel['title'],"<br />\n";
foreach ($rss->items as $item ) {
$title = $item[title];
$url = $item[link];
echo "<a href=\"$url\">$title</a><br />\n";
}
?>
Comme pour l'utilisation basique, libre à vous de modifier ces lignes.


< Page précédente XML Page suivante >