TP flux RSS en PHP
Réponse AJAX

Informations sur... les flux RSS

Les flux RSS permettent à un site de mettre à disposition des informations, sous forme d'articles, au format XML.

Ces information peuvent être incluse dans une page Web, ou traitées par un logiciel spécialisé. Vous pouvez également les lire en PHP pour les traiter de la façon que vous voulez.

Dans ce TP, on va apprendre à :

Vous aurez peut-être besoin de rappels de première année : Cours XML première partie.

Analyse d'un document RSS et en retrouver la DTD

Un flux RSS est à la base un document au format XML.

Il ne contient pas n'importe quelle balise ni n'importe quelle structure car ceci a été défini officiellement dans une DTD.

Sur le site de Wikipedia, lisez l'article sur le RSS. Analysez l'exemple et la description des balises. A partir de ces balises (et en vous aidant sur le cours sur les DTD), rédigez la DTD du RSS 2.0.

Votre réponse n°1

Lecture d'un flux RSS dans un logiciel spécialisé:
les agrégateurs

Grâce à ce tutoriel, installer l'agrégateur FeedReader et abonnez-vous à au moins un flux RSS.

Il existe de nombreux autres agrégateurs, par exemple Slick RSS (démonstration) qui est une extension de Chrome.

Vous pouvez choisir un flux RSS sur l'actualité informatique, l'actualité cinéma, politique, etc. (tout existe)

Génération de votre propre flux RSS

L'objectif est de générer un fichier tel que celui décrit sur Wikipedia, qui respecte donc la DTD que vous avez écrite au premier paragraphe.

Choisissez une de vos bases de données que vous souhaitez publier en flux RSS. Si vous n'avez pas de telle base de données, vous pouvez utiliser :

Le traitement est simple : vous parcourez le contenu de votre table, trié par ordre chronologique inverse (les plus récents en premier) : mysql_connect, mysql_select_db, mysqli_myquery, mysqli_fetch_array.

En parcourant cette table : au lieu d'envoyer les données au navigateur comme on le fait habituellement (avec echo), vous envoyez les données dans un fichier texte en utilisant les instructions PHP suivantes :

Par exemple, pour écrire la ligne d'en-tête :
  $fichier = fopen("mon_flux_rss.xml", "w"); // à faire une seule fois pour toutes les écritures qui suivent.
  fwrite ($fichier, "<?xml version='1.0' encoding='iso-8859-1'?>\n");

Une fois que c'est terminé, copiez ici le code PHP qui effectue la génération :

Votre réponse n°2

Copiez ici le fichier .xml résultant de l'opération :

Votre réponse n°3

Précision utile sur...la gestion de la date

Les flux RSS supportent les dates au format RFC 2822 (exemple : Wed, 14 Nov 2018 12:11:37 +0100).

Pour générer ce genre de date en php, vous devez utiliser :

Intégration du flux RSS à votre site

Copiez le fichier .xml ou le générer automatiquement

Pour que votre site puisse proposer le flux RSS, il faut qu'il contienne le fichier .xml généré ci-dessus. Vous pouvez donc copier ce fichier dans un répertoire de votre site Web.

Toutefois, ceci n'est pas terminé. Il faudra que votre flux RSS (c'est à dire votre fichier .xml) soit mis à jour à chaque nouvelle actualité. Il faut donc que le code php de l'étape précédente soit copié à l'endroit opportun sur le site Web, c'est à dire :

Ajouter la balise <link ...> pour que le navigateur reconnaisse le flux

Lorsque le navigateur détecte qu'une page propose un (ou plusieurs) flux RSS, il l'indique par une icône dans la barre d'adresse. Par exemple, sous Firefox :
Attention : depuis FireFox 4, par défaut, l'icône n'apparait plus dans l'interface. Si vous voulez qu'un visiteur puisse s'abonner à votre flux RSS, il faudra lui proposer un lien hypertexte vers le flux. C'est également le cas sous Google Chrome. Cet icône disparait car il est peu utilisé par le grand public.

Pour que le navigateur détecte le flux, il suffit de rajouter dans l'en-tête de la page le lien suivant :
<link rel="alternate" type="application/rss+xml" title="nom du flux" href="url du flux.xml" />

Afficher des flux RSS externes dans votre site

La méthode précédente permet simplement à l'internaute de s'inscrire au flux. Vous pouvez vouloir afficher les informations du flux directement dans votre propre page Web.

Par exemple, voici les 3 dernières actualités de PCInpact, prises dans leur flux RSS (désolé pour les accents...) :

Si c'est votre propre flux, la suite est inutile : vous maîtrisez les données (elles sont dans votre base de données), affichez-les en PHP comme on a l'habitude de le faire. Cette méthode s'applique donc aux flux RSS externes (générés par d'autres sites que le vôtre), mais que vous voulez quand même afficher dans votre propre site.

Il n'y a pas de méthode simple, ce n'est pas un simple lien à rajouter à votre site. Il existe toutefois des libraires PHP qui vous mâchent le travail : après avoir donné l'URL du flux RSS, il ne reste qu'à s'occuper de la mise en forme. Voici ces deux outils et les tutoriels pour les mettre simplement en oeuvre :