trombone

La lecture d'un flux RSS (Really Simple Syndication) en PHP pas à pas

Un flux RSS est en fait un fichier XML. Le problème est donc ramené à lire un fichier XML. Avec un peu de connaissance du PHP et l'accès à une documentation vous ne devriez avoir aucun mal.

Donc au départ vous récupérez l'url du fichier, par exemple "http://www.commentcamarche.net/rss/rss_forum.php3?cat=24" qui est le flux RSS du forum webmastering du site CommentCamarche.net.

La première étape consiste à ouvrir le fichier.

Si vous avez un soucis avec l'emploi de la fonction fopen sur votre hébergement vous pouvez lire remplacer fopen par fsockopen.

A ce stade votre variable $donnees contient

Ce qui nous intéresse dans ce fichier ce trouve entre les balises <item> et </item>, il s'agit du titre (title), du lien (link) et de la description. Vous pouvez constatez que les balises "item" se répètent les unes à la suite des autres. Pour récupérer ces informations on va utiliser un parseur qui va convertir cette chaine de caractères en deux tableaux, l'un concernant les balises, l'autre les valeurs

Ce qui vous donne pour le tableau des balises

et le tableau des valeurs

Chaque élément du tableau balises est en fait un tableau dont les éléments donnent un indice du tableau valeurs. L'indice qui nous intéresse est "ITEM", chaque élément de ce tableau indique l'indice du tableau valeurs où on trouve un tableau dont l'indice "tag" est égal à "ITEM". Comme nous rencontrons ce "tag" pour la balise ouvrante et la balise fermante le contenu qui nous intéresse se trouve entre ces deux balises. Il faut donc lire les indices du tableau valeurs se trouvant entre deux indices indiqués dans le tableau balises, ceci par paire.

Pour le premier "item" il faut lire les éléments suivants du tableau valeurs, $valeurs[$balises['ITEM'][0] + 1] à $valeurs[$balises['ITEM'][1] - 1]. Ce qui donne

Il vous suffit ensuite de traiter vos données comme vous le souhaitez. Par exemple un affichage simple. Je n'affiche que les trois premiers "items", le résulat complet est visible sur la page Forum webmaster.