PHP : récupérer les flux RSS d'une page distante
Par bertouze, mercredi 23 janvier 2008 à 13:53 :: Informatique : tutoriels, astuces... :: #143 :: rss
L'objet du présent tutoriel est simple : un site distant propose un flux RSS, au format XML, via une adresse web du type http://www.lesite.com/actualite/rss.php
Notre exemple se base sur le flux de brèves d'universfreebox.com.
Il s'agira ensuite de récupérer ce flux et de le "transformer" en liste d'actu visualisable sur un navigateur, au format html... via PHP.
Ce tutoriel est une reprise d'un tutoriel que propose Pierre Ricadat sur le site www.développez.com.
Notre exemple se base sur le flux de brèves d'universfreebox.com.
Il s'agira ensuite de récupérer ce flux et de le "transformer" en liste d'actu visualisable sur un navigateur, au format html... via PHP.
Ce tutoriel est une reprise d'un tutoriel que propose Pierre Ricadat sur le site www.développez.com.
En premier lieu, on crée un fichier lire-RSS.php.
La première partie du fichier donne les styles d'affichage des infos.
Ce fichier comprend ensuite une fonction php appelée lit_rss() qui va parcourir le fichier xml du site distant à la recherche du contenu des items du flux XML (le titre, l'auteur, la date ....). Le résultat est stocké dans un tableau $resultat[]
Ensuite, on va chercher sur la page distante, les items dont nous avons besoins (ici le titre de l'article, le lien vers l'article, sa description et sa date de publication) et on les retourne sous forme de tableau.
Le tableau en question sera de la forme [0][titre,adresse,description,date] :
On écrit un titre pour nos news :
echo "<p class=\"centre titreannuaire\">NEWS D'UNIVERS FREEBOX</p>";
Et on écrit les news à partir du tableau, en le parcourant à l'aide d'un foreach.
Le tour est joué....reste plus qu'à appeler le fichier www.monsite.com/lire-RSS.php. Normalement, l'écran affiche les actualités correspondant au flux rss. Fastoche non ?
La première partie du fichier donne les styles d'affichage des infos.
.titreannuaire {
font-size : 18px;
text-decoration : none;
font-family : Helvetica, Arial;
color : #006699;
font-weight:bold;
}
.gtexterouge{
font-family: Verdana,Arial, Helvetica, sans-serif;
font-size: 13px;
color: #DA412F;
text-decoration: none;
font-weight:bold;
}
.pgrisbas {
font-size : 11px;
text-decoration : none;
font-family : Verdana,Arial, Helvetica, sans-serif;
color : #414141;
font-weight:bold;
padding-bottom:5px;
}
.resumeactu{
font-size : 12px;
text-decoration : none;
font-family : Arial, Helvetica, sans-serif;
color : #000000;
padding-bottom:10px;
}
a.email {font-family: Verdana,Arial, Helvetica, sans-serif; font-size: 13px; color: #006699; text-decoration: none;font-weight:bold}
Ce fichier comprend ensuite une fonction php appelée lit_rss() qui va parcourir le fichier xml du site distant à la recherche du contenu des items du flux XML (le titre, l'auteur, la date ....). Le résultat est stocké dans un tableau $resultat[]
function lit_rss($fichier,$objets)
{
// on lit tout le fichier
if($chaine = @implode("",@file($fichier))) {
// on découpe la chaine obtenue en items
$tmp = preg_split("/<\/?"."item".">/",$chaine);
// pour chaque item
for($i=1;$i/",$tmp[$i]);
// on ajoute le contenu de l'objet au tableau resultat
$resultat[$i-1][] = @$tmp2[1];
}
// on retourne le tableau resultat
return $resultat;
}
}
Ensuite, on va chercher sur la page distante, les items dont nous avons besoins (ici le titre de l'article, le lien vers l'article, sa description et sa date de publication) et on les retourne sous forme de tableau.
$rss=lit_rss("http://www.universfreebox.com/backend.php?id_rubrique=29",array("title","link","description","pubDate"));
Le tableau en question sera de la forme [0][titre,adresse,description,date] :
Array ( [0] => Array ( [0] => Naguib soutient Iliad/Free [1] => http://www.universfreebox.com/article4666.html [2] => La spécialité d'Orascom Telecom... [3] => Wed, 23 Jan 2008 03:03:32 +0100 ) [2] => Array ( [0] => 9 candidats pour diffuser la Ligue1 [1] => http://www.universfreebox.com/article4665.html [2] => Malgré une mauvaise réputation,... [3] => Tue, 22 Jan 2008 22:59:52 +0100 )
On écrit un titre pour nos news :
echo "<p class=\"centre titreannuaire\">NEWS D'UNIVERS FREEBOX</p>";
Et on écrit les news à partir du tableau, en le parcourant à l'aide d'un foreach.
foreach($rss as $tab) {
echo '<div>
<div class="gtexterouge">'.($tab[0]).'</div>
<div class="pgrisbas"><I>posté le '.date("d/m/Y",strtotime($tab[3])).'</I></div>
<div class="resumeactu bas">'.($tab[2]).' <a href="'.($tab[1]).'" class="email">Lire tout l\'article >></a></div>
</div>';
}Le tour est joué....reste plus qu'à appeler le fichier www.monsite.com/lire-RSS.php. Normalement, l'écran affiche les actualités correspondant au flux rss. Fastoche non ?








Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire