[PHP] Afficher les articles d’un flux RSS

Les flux RSS sont utiles pour suivre l'actualité d'un site web. Sachant qu'ils contiennent les informations liés aux articles d'un site, il peut se révéler pratique d'extraire le contenu d'un flux RSS pour en afficher une liste des articles avec un lien vers ceux-ci. L'objectif de cet article consiste à créer un simple code PHP qui sert d'agrégateur RSS.

ElePHPant

ElePHPant

Prérequis

Il faut avoir quelques notions avec le langage de programmation PHP et avoir un hébergement qui prend en compte PHP 5.

Code PHP

Le code PHP, qui ne fait que 8 lignes, est visible ci-dessous.

<?php
$url = "http://tonyarchambeau.com/blog/feed/"; /* insérer ici l'adresse du flux RSS de votre choix */
$rss = simplexml_load_file($url);
echo '<ul>';
foreach ($rss->channel->item as $item){
 $datetime = date_create($item->pubDate);
 $date = date_format($datetime, 'd M Y, H\hi');
 echo '<li><a href="'.$item->link.'">'.utf8_decode($item->title).'</a> ('.$date.')</li>';
}
echo '</ul>';
?>

Démonstration

Dans un premier temps ce code extrait les informations du flux RSS et convertit le document XML en un objet. Puis la boucle foreach permet d'exploiter les informations présentent dans les balises <item> (dans un flux RSS chaque article est inclus dans une balise <item>).

A l'intérieur de la boucle foreach, il y a il ne reste plus qu'à afficher les informations souhaités. Dans l'exemple ci-présent trois informations sont extraites: le lien vers l'article, le titre de l'article et la date de publication.

Personnaliser

Il est possible d'utiliser plus d'informations si celles-ci sont disponibles dans le flux RSS. Le tableau ci-dessous présente les métadonnées qui sont souvent inclussent dans un fil RSS avec une description.

Métadonnée Nécessité Description Exemple
<title> Obligatoire Titre de l'article [Twitter] Extraire les tweets en AJAX
<link> Recommandé Adresse internet lié à l'article. http://tonyarchambeau.com/blog/ajax/twitter-extraire-les-tweets-en-ajax-94/
<pubDate> Facultatif Date de publication de l'article. Tue, 12 Jan 2010 16:24:11 +0000
<description> Obligatoire Cette balise peut tout aussi bien contenir une brève description de l'actualité ou bien l'article en entier. Certains sites préfère dévoiler un extrait tandis que d'autres mettent l'intégralité des articles dans le flux RSS. Le choix peut se révéler très stratégique. <![CDATA[Le service Twitter est très pratique pour publier des courts messages. Il est entre autres utile pour la veille technologique. Parfois il se révèle intéressant de consulter les derniers messages d'un compte Twitter. Cet article présente un tutorial pour réaliser une petite application AJAX qui affiche les derniers messages d'un compte Twitter de votre choix. [...]]]>
<guid> Facultatif Définit un identifiant unique pour l'objet. http://tonyarchambeau.com/blog/?p=94
<author> Facultatif Contient l'adresse email de l'auteur. auteur@example.com
<category> Facultatif Définit la catégorie de l'article. <![CDATA[PHP]]>
<comments> Facultatif Définit l'adresse d'une page web sur laquelle se trouve les commentaires liés à l'article. http://tonyarchambeau.com/blog/ajax/twitter-extraire-les-tweets-en-ajax-94/#comments

Pour utiliser l'une ou l'autre des métadonnées dans le code présenté sur cette page web, il suffit de reprendre le nom de l'objet. Par exemple, pour inclure la description il suffit d'utiliser la variable "$item->description" à l'intérieur de la boucle foreach du code présent sur cette page.

Amélioration supplémentaire

Il est possible d'améliorer le code présenté sur cet article. Pour commencer il est possible de personnaliser l'aspect en modifiant le xHTML/CSS, puis le format de la date. Enfin, certaines fonctionnalité supplémentaires peuvent être ajoutées, tel que l'ajout d'autres métadonnées présenté dans le tableau.

Commentaires

Salut,

Bon article. Mais comment récupérer proprement le contenu de chaque flux (item), pas la description, mais le contenu en lui même sans les js, menus, footer, ... ?

Demsking - 17 novembre 2013 à 00h38

Mec tu me sauves la vie :p Simple et concis. Moi je dis banco!

samsam - 7 janvier 2014 à 14h46

s'il vous plait je besoin de récupérer la description complète au lieu d'une partie et je ne trouve pas la solution est ce que quelqu'un peut m'aider
et merci d'avance

chaima - 25 mars 2014 à 23h14

Merci beaucoup, très simple et efficace !

sylvain - 25 août 2015 à 17h06

Leave a comment