Créer un flux RSS en PHP
Un flux RSS est un document XML distribué par un site internet et qui contient les derniers contenus publiés sur ce site (par exemple : les billets sur un blog, ou les derniers tweet d'un compte twitter).
Ce document XML doit respecter une norme bien définie et utilise l'un de ces 2 protocoles : RSS 2.0 et Atom.
Les flux RSS ont connu leur âge d'or il y a quelques années, entre 2006 et 2009, où ils étaient utilisés par certains internautes pour s'abonner à leurs sites internet favoris et se tenir informé des nouveautés sans aller vérifier en régulièrement sur le site, car un flux RSS se consulte à l'aide d'un lecteur RSS comme Google Reader ou un client desktop tel que Thunderbird.
Mais les réseaux sociaux comme Facebook, Twitter, ainsi que les applications smartphone ont rendu le flux RSS un peu désuet d'un point de vue utilisateur. Pour autant cette technologie n'est pas obsolète, car les flux RSS sont très pratiques pour échanger des informations avec d'autres sites (comme les réseaux sociaux) et les applications smartphone. Du coup ils sont toujours utilisés, mais de manière indirecte.
Voici à quoi peut ressembler un flux RSS 2.0 (ici c'est un extrait de celui de photoshop tuto qui est généré par Wordpress, mais que j'ai un peu allégé ici, pour l'exemple) :
<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"> <channel> <title>Photoshop Tuto</title> <atom:link href="http://www.photoshoptuto.com/feed" rel="self" type="application/rss+xml"/> <link>http://www.photoshoptuto.com</link> <description>Un blog utilisant WordPress</description> <lastBuildDate>Fri, 08 Mar 2013 07:00:00 +0000</lastBuildDate> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <item> <title>Texte lucioles</title> <link>http://www.photoshoptuto.com/tuto/texte-lucioles-1067</link> <pubDate>Fri, 08 Mar 2013 07:00:00 +0000</pubDate> <category><![CDATA[féérie]]></category> <category><![CDATA[magique]]></category> <category><![CDATA[nuit]]></category> <guid isPermaLink="false">http://www.photoshoptuto.com/tuto/texte-lucioles-1067</guid> <description><![CDATA[<p>Du texte écrit avec des lucioles lumineuses, pour apporter une touche de féérie.</p>]]></description> <slash:comments>0</slash:comments> </item> <item> <title>Modéliser une canette en 3D</title> <link>http://www.photoshoptuto.com/tuto/modeliser-canette-3d-photoshop-1066</link> <pubDate>Thu, 07 Mar 2013 09:00:00 +0000</pubDate> <category><![CDATA[Packaging]]></category> <category><![CDATA[pub]]></category> <guid isPermaLink="false">http://www.photoshoptuto.com/tuto/modeliser-canette-3d-photoshop-1066</guid> <description><![CDATA[<p>Modéliser une canette et du texte basique en 3D avec Photoshop CS6 Extended.</p>]]></description> <slash:comments>0</slash:comments> </item> </channel> </rss>
Dans un tout autre contexte, cet article est très intéressant : export thunderbird vers excel.
La technique pour créer un flux RSS en PHP ressemble beaucoup à celle qui permet de créer un sitemap.
La manière de générer un flux RSS dépend de votre site, mais voici un petit exemple qui montre rapidement comment faire :
<?php // Récupération des données dans la base de données (MySQL) $liste = $db->query("SELECT id, url, date_publication, description FROM articles LIMIT 0, 10"); // Affichage header('Content-Type: text/xml; charset=UTF-8'); echo '<?xml version="1.0" encoding="UTF-8"?>'."\n"; ?> <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"> <channel> <title>___titre___</title> <link>___url_homepage___</link> <description>______</description> <?php // Boucle qui liste les items while( $row = mysql_fetch_object($liste) ){ $title = htmlspecialchars($row['title']); $link = htmlspecialchars($row['url']); $pubDate = date('r', strtofime($row['date_publication'])); $description = $row['description']; ?> <item> <title><?php echo $title; ?></title> <link><?php echo $link; ?></link> <pubDate><?php echo $pubDate; ?></pubDate> <description><![CDATA[<?php echo $description; ?>]]></description> </item> <?php } ?> </channel> </rss>
Découvrez ce tutoriel photoshop : photomontage "sans espoir" à lire tout de suite !