Affichage d'un flux RSS
Warning: Invalid argument supplied for foreach() in /mnt/114/sda/0/0/christophe.helson/affichage-RSS/index.php5 on line 39
Lemonde.fr propose à ses lecteurs des fils RSS pour recevoir les titres de l'actualité en continu. Un fil RSS est un document qui structure ses données en XML :
<item>
<title>Un espoir de traitement pour enrayer la maladie de Huntington</title>
<link>http://www.lemonde.fr/web/article/0,1-0@2-3244,...</link>
<description>Pour ralentir cette affection ... neuronales d'origine foetale</description>
<pubDate>Mon, 06 Mar 2006 14:34:23 GMT</pubDate>
<guid isPermaLink="false">
http://www.lemonde.fr/web/article/0,1-0@2-3244,...
</guid>
</item>
On utilise la classe SimpleXML pour convertir le fichier XML en un objet de cette classe :
$alaune = 'http://www.lemonde.fr/rss/sequence/0,2-3208,1-0,0.xml';
$root = @simplexml_load_file($alaune);
On accéde aux sous éléments de l'objet $root avec la notation ->. Ici on affiche le logo Le Monde.fr avec un lien vers la page d'accueil du site :
$imgurl = (string) $root->channel->image->url;
$imgtit = (string) $root->channel->image->title;
$imglink = (string) $root->channel->image->link;
echo "<a href='$imglink'><img src='$imgurl' title='$imgtit' alt='$imgtit' /></a>
";
Enfin on liste les différentes nouvelles avec une boucle foreach qui peut s'utiliser avec des objets de la classe SimpleXML. Dans cet exemple on n'affiche que les 5 premiers éléments.
C'est la balise HTML <dl> (definition list) qui est utilisée pour l'affichage puisqu'elle correspond sémantiquement à une liste de couples (titre/définition).
L'ensemble est ensuite intégré dans une boîte div auquelle on applique un style d'affichage adéquat.
function convertit($chaine){
$tab_htm = array("&#34;","&#39;");
$tab_fin = array("\"", "'");
$chaine = str_replace($tab_htm, $tab_fin, $chaine);
return $chaine;
}
$i=1;
echo "<dl>
";
foreach($root->channel->item as $actu){
echo "<dt><a href='";
echo htmlentities((string)$actu->link, ENT_QUOTES, 'UTF-8');
echo "'>";
echo htmlentities((string)$actu->title, ENT_QUOTES, 'UTF-8');
echo "</a></dt>
<dd>";
$actdes = htmlentities((string)$actu->description, ENT_QUOTES, 'UTF-8');
echo convertit($actdes);
echo "</dd>";
if (++$i>5) break;
}
echo "</dl>
";
NB: les flux RSS sont destinés à être intégrés dans un lecteur RSS pour une utilisation personnelle. L'exemple ci-dessus de réaffichage n'est utilisé que pour la démonstration des possibilités Objet de PHP 5. Pour rediffuser le flux des actualités du Monde, il convient de s'adresser directement à la rédaction du site pour obtenir les autorisations nécessaires.