mercredi 7 Mai 2008

Afficher des flux RSS sur votre site

PHPIl existe 2 façons d'afficher sur votre site des informations provenant des flux RSS d'autres sites en PHP.

• La première est d'ouvrir le flux comme n'importe quel fichier et d'utiliser les fonctions des chaines de caractères de PHP pour construire son propre analyseur.

L'inconvénient est que suivant la méthode n'est pas "portable": suivant la version du flux RSS (1, 2, Atom) on aura des constructions différentes et ce qui marchait pour un flux, ne marchera pas pour un autre.


• La seconde est d'utiliser une bibliothèque déjà faite, où ces problèmes ont été résolus par d'autres. :-)

Il existe 2 packages de PEAR, un groupe de travail proche des auteurs de PHP, qui permet la lecture de flux. C'est la solution la plus facile lorsqu'on a besoin que du titre et du lien. Ils sont malheureusement trop simples si on veut recueillir ne serait-ce que la date de parution des articles.

Une autre bibliothèque largement utilisé est MagpieRSS. Si l'installation est très simple, le flux est parsé dans un tableau et on aura le même genre de problèmes: parfois la date sera dans la case "pubDate", parfois dans "updated"... Difficile de s'adapter à plusieurs flux avec le même code. :-(


Heureusement, il existe une solution: SimplePie. :-) Ici des méthodes existent pour récupérer le titre, le lien, le contenu, la date et même les images avec la même fonction quel que soit la version du flux RSS.

C'est une bibliothèque orienté objet, un peu plus rebutante au premier abord, elle est pourtant tout aussi simple que les autres.

Exemple basique:

require_once('../simplepie.inc');
$feed = new SimplePie('http://simplepie.org/blog/feed/');

Il est même possible de charger plusieurs flux, et de les afficher réunis en une seule sortie! Il suffit de passer un tableau contenant toutes les adresses à la fonction set_feed_url.


require_once('../simplepie.inc');
$feed = new SimplePie();
$feed->set_feed_url(array(
'http://simplepie.org/blog/feed/',
'http://azur-dev.kizone.net/feed'
));

Le flux est maintenant chargé, il faut ensuite faire une boucle pour afficher les résultats.

foreach ($feed->get_items() as $article)

À chaque tour de la boucle foreach on récupère le titre avec $article->get_title(), le lien avec
$article->get_permalink(), etc...

L'exemple complet avec l'affichage est ici dans la documentation de SimplePie.

Ce n'est pas difficile: chaque information à récupérer à sa fonction. On peut donc facilement récupérer la date ou les catégories de l'article avec les mêmes fonctions quelle que soit la version du flux.

Après avoir testé différentes solutions, je me suis définitivement arrêté sur SimplePie. :-)


café Cet article vous a aidé? 
Offrez-moi un café!
Agrégateur informatique

Une réponse à “Afficher des flux RSS sur votre site”

  1. 1
    Darky a dit:

    il existe aussi rss2html http://www.feedforall.com/download.htm

Laisser un commentaire

Azur Dev