Epivoila, blog graphisme developpement referencement

Class PHP 5 pour parser des RSS

- Ecrit par clement le Wednesday 5 November 2008 | catégorie : Développement web

- Mots clefs :

rss php parser

J’ai développé une class PHP 5 qui permet de parser des flux RSS. Je l’ai mis à l’epreuve sur un projet PHP / AJAX et elle fonctionne correctement. Donc voila, un petit post pour partager sans prétention une class qui pourrait vous êtres utile…

Pour parser un flux RSS en PHP j’ai utilisé une fonction native de PHP 5 qui est simplexml_load_file, le fonctionnement de la class repose donc sur le fait que vous ayez au moins PHP 5 d’installé sur votre serveur. A savoir aussi, la class ne gère pas les flux Atom.

Le plus simple c’est d’abord de vous montrez un exemple de comment on s’en sert, ‘ya pas plus simple’ :

-Inclure la class
-Créer un objet ParseurRSS
-Appeler la méthode de parsage

require_once("class/ParseurRSS_class.php");
$parseur = new ParseurRSS();
$retourParser = $parseur->parser("http://www.epivoila.com/feed", 5, false);

La méthode parser retourne un tableau à 2 dimensions de tableaux associatif, donc pour afficher les informations :

foreach($retourParser as $key=>$val)
{
	echo $val["title"];
	echo  $val["description"];
	echo  $val["pubDate"];
	echo  $val["link"];
	foreach($val["category"] as $keysCategory=>$valCategory)
	{
		echo $valCategory;
	}
 
}

Donc : on parcoure le tableau de retour, pour chaque tableau associatif on affiche la valeur de la clef. Même principe pour les catégories mais avec un niveau supplémentaire.

C’était pour l’exemple, voici le détail des fonctions :

/*
nom: parser
objectif: parser le flux
type: public
@param1: adresse du flux rss, String
@param2: nombre d'éléments à parser, Int
@param3: prendre en compte les tag html, Boolean
return : array
*/
public function parser($urlRSS, $nbElement = null, $tagHtml = null)
 
/*
nom: getTitle
objectif: retourner le titre du flux
type: public
return : String
*/
public function getTitle()
 
/*
nom: getLink
objectif: retourner le lien du flux
type: public
return : String
*/
public function getLink()
 
/*
nom: getDescription
objectif: retourner la description du flux
type: public
return : String
*/
public function getDescription()
 
/*
nom: getLanguage
objectif: retourner la langue du flux
type: public
return : String
*/
public function getLanguage()
 
/*
nom: getUrlRss
objectif: retourner l'url du flux
type: public
return : String
*/
public function getUrlRss()

Voila, avec ça vous devriez pouvoir parser des flux RSS facilement :)

Le fichier source est ici (format zip) : parseurrss_class

Commentaires (10)

Flèche commentaire tu connais mes talents de programmeur... donc forcémment j'ai pas tout pigé! Si j'ai bien compris ta classe permet d'ajouter un flux rss sur un site??? (ou pas?)

- Ecrit par maxence, le 6 November 2008 à 9:08 am

Flèche commentaire Fais gaffe à force de bosser comme ça tu vas surpasser Amandine ! J'ai dit Amandine ?... Connait pas ...

- Ecrit par Julien, le 6 November 2008 à 12:20 pm

Flèche commentaire Maxence: non la class ne permet pas d'ajouter un flux RSS à un site, elle permet de lire un flux RSS et d'afficher ces informations sur un site.

Pour créer un flux c'est très simple, en faisant vite et sale tu récupères les informations de ta base de données et tu les affiches avec les balises de la norme RSS.

En gros c'est comme si tu faisais un affichage, par exemple de tes news, sur une page normal, sauf que t'utilises pas les même balises. Après tu peux essayer de te faire une class pour mettre une couche d'abstraction et réutiliser à chaque fois que tu en a besoin.

Julien: non non c'est pas ce que je cherche, d'ailleurs du PHP j'en fais pas souvent !

- Ecrit par clement, le 6 November 2008 à 12:51 pm

Flèche commentaire Pas mal cette ptite classe php5 xD et très simple d'utilisation, je risque d'en avoir besoin un jour, je choperai les sources si ca te dérange pas xD Zoubi mon pote PS : oh les 2 fah plein de tah... bien ?

- Ecrit par Léo, le 6 November 2008 à 3:23 pm

Flèche commentaire Hello, J'ai justement parsé récemment un flux RSS (pour info, sur cette page, c'est celui des bandes-annonces d'Apple :http://www.onlike.net/cinema/) et je me suis heurté à une balise (XML donc) dite "à colonne". En l'occurrence il s'agit de et mon parseur n'arrivait pas à... la parser. A cause des deux points (":"). Donc je me demandais si ta classe réussit à parser ce genre de balise(je suis un peu fainéant pour vérifier ce soir). :)

- Ecrit par Kynerion, le 21 November 2008 à 10:03 pm

Flèche commentaire Salut Kynerion,

Désolé pour le retard de réponse, je viens juste de m'apercevoir du commentaire validé...

Je viens de tester avec ma class, j'ai n'ai pas eu de problème pour parser : http://images.apple.com/trailers/home/rss/newtrailers.rss

C'est bien ce flux ?

- Ecrit par clement, le 23 November 2008 à 6:37 pm

Flèche commentaire Parfaitement, c'est le bon flux. Merci beaucoup alors, je vais garder ta classe dans un coin. ;) (et pardon pour la réponse également tardive, j'ai failli perdre le lien de ton post)

- Ecrit par Kynerion, le 25 November 2008 à 3:54 pm

Flèche commentaire Ah et bien non en fait, j'ai testé ta classe, elle ne prend pas les balises à colonnes (notamment ). Dommage.

- Ecrit par Kynerion, le 25 November 2008 à 6:20 pm

Flèche commentaire erf.

Tu peux m'éclairer vite fait sur ce qu'est une balise à colonne ?

- Ecrit par clement, le 25 November 2008 à 6:58 pm

Flèche commentaire Ah oui je viens de comprendre que dans mon 1er commentaire ma balise exemple n'était pas passée! Voici donc quelques modèles de balises à colonne (avec des espaces pour qu'elles s'affichent bien) :

- Ecrit par Kynerion, le 28 November 2008 à 1:41 pm

Postez votre commentaire