Epivoila, blog graphisme developpement referencement

Class PHP 5 pour parser des RSS

- Ecrit par clement le Mercredi 5 novembre 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 (11)

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 novembre 2008 à 9:08

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 novembre 2008 à 12:20

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 novembre 2008 à 12:51

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 novembre 2008 à 3:23

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 novembre 2008 à 10:03

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 novembre 2008 à 6:37

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 novembre 2008 à 3:54

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 novembre 2008 à 6:20

Flèche commentaire

erf.

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

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

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 novembre 2008 à 1:41

Flèche commentaire

Bonjour,

Je suis un débutant en flux RSS. J’aimerais créer une base de données référençant un certain nombre de flux.

J’ai donc besoin d’un parseur. Le tien semble vraiment correspondre, mais je ne suis pas sûr de savoir m’en servir.
Concrètement voilà ce que je fais. J’ai créé une page php dans laquelle j’appelle le fichier source puis j’écrit les deux encadrés que tu as laissé (pour inclure la class, créer l’objet ParseurRSS,appeler la méthode de parsage et afficher l’information).

On m’indique alors un “parse error” à la ligne :
‘$retourParser = $parseur->parser(”http://www.epivoila.com/feed”, 5, false);’

Je n’utilise pas le paseur comme il faut ?

Je vous remercie d’avance pour votre aide précieuse, et vous félicite déjà de vos travaux !

- Ecrit par Rémi, le 3 novembre 2009 à 10:55

Postez votre commentaire