Comment afficher des flux RSS facilement avec PHP

L’article suivant explique comment utiliser la fonction PHP simplexml_load_file() pour afficher un ou plusieurs flux RSS (format XML) sur votre site.
Idéal si vous concevez un site basé sur le contenu d’autres sites via leur flux RSS même si cela n’est vraiment pas conseillé niveau référencement.

Vous pouvez consulter la démonstration ici : Démo

La structure du script sera composée par les fichiers suivants :

  • index.php :  Affichage du flux RSS
  • class.rss.php : La classe qui récupérera les flux RSS
  • style.css :  Style de la page

class.rss.php

<?php
 class rss {
	var $feed;

	function rss($feed) 
	{
		$this->feed = $feed;  
	}

	private function parseFlux() 
    {
		$rss = simplexml_load_file($this->feed);

	    $rss_split = array();

	    foreach ($rss->channel->item as $item) {
		    $title  	 = (string) $item->title; // Title
		    $link   	 = (string) $item->link; // Url Link
		    $description = (string) $item->description; //Description
		    $rss_split[] = '<div class="bloc-title-link">&raquo; <a href="'.$link.'" target="_blank" title="" >'.$title.'</a><hr></div>
			';
    	}

    	return $rss_split;
	}

	function displayFlux($numrows,$head) 
	{

	    $rss_split = $this->parseFlux();

	    if (($rss_split))
	    {
	    	$totalFeed = count($rss_split);
		    if ($numrows > $totalFeed) {
		    	$numrows = $totalFeed;
		    }
		    $i = 0;
		    $rss_data = '<div class="bloc">
		           <div class="bloc-head">
		         '.$head.'
		           </div>
		         <div class="bloc-title">';
		    while ( $i < $numrows ) 
		   	{
		      $rss_data .= $rss_split[$i];
		      $i++;
		    }

		    $rss_data.='</div></div>';
	    }

	    return $rss_data;
  	}
}
?>

index.php

<html>
<head>
	<meta charset="UTF-8">
	<title>Affichage de flux RSS avec PHP</title>
	<link rel="stylesheet" href="style.css">
</head>
<body>

<?php
include_once('class.rss.php');

$feedlist = new rss('https://www.dootech.fr/feed');
echo $feedlist->displayFlux(10,"Bass-m.me");

$feedlist = new rss('http://feeds.feedburner.com/Debutoriel');
echo $feedlist->displayFlux(10,"Debutoriel");

?> 

</body>
</html>

style.css

body { font-family: verdana; font-size: 12px;}

.bloc{
    width:24%;
    padding:.5%;
    margin: 0 auto;
}
.bloc-head {
    font-size:18px;
    font-weight:bold;
    text-align:left;
    background-color:#0175ae;
    color:#ffffff;
    padding:10px;
    border-radius: 5px 5px 0 0;
    text-shadow: 2px 2px #000;
}
.bloc-title {
    text-align:left;
    padding:5px;
    border:1px solid #e1e1e1;
    border-radius: 0 0 5px 5px;
    font-size: 0.9em;
     color: #0175ae;
 }
.bloc-title-link {
 	padding: 0px 0;
 }
 hr { border: 1px solid #e1e1e1; }
 a { color: #0175ae; text-decoration: none;}
 a:hover { color: #000; text-decoration: none;}

Vous pouvez consulter la démonstration ici : Démo