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
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?)
Fais gaffe à force de bosser comme ça tu vas surpasser Amandine ! J'ai dit Amandine ?... Connait pas ...
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 !
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 ?
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). :)
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 ?
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)
Ah et bien non en fait, j'ai testé ta classe, elle ne prend pas les balises à colonnes (notamment ). Dommage.
erf.
Tu peux m'éclairer vite fait sur ce qu'est une balise à colonne ?
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) :