Lire un flux RSS

ZuGbEn Messages postés 32 Date d'inscription lundi 14 octobre 2002 Statut Membre Dernière intervention 7 juillet 2007 - 16 mars 2006 à 16:37
ZuGbEn Messages postés 32 Date d'inscription lundi 14 octobre 2002 Statut Membre Dernière intervention 7 juillet 2007 - 16 mars 2006 à 17:43
Voilà, je suis un gros débutant en matière de flux rss. J'ai faire un petit script qui lit un flux, vraiment simple. J'aimerais simplement avoir un avis... je l'ai testé sur quelques flux, et ca marche pas mal.

Voilà le script :

//$fp= fopen("http://mononoke-bt.org/rss/news_weekly.xml","r");
//$fp=fopen("http://www.aidoforum.com/rss.php","r");
//$fp=fopen("http://www.zebulon.fr/RSS/astuces.rss","r");
$fp=fopen("http://rss.absolut-photo.com/","r"); // ouvre le flux désiré
$txt ="";
while ($ctxt = fread($fp,1024)) $txt.= $ctxt; // enregistre le flux entier dans une chaine

$n =0;
while ($from = strpos($txt," ",$n)){ // trouve la première entrée à partir de $n
$from+ = 6; // juste pour la forme, enlève et
$to= strpos($txt,"",$from); // trouve la fin de l'entrée courante
$cnews =substr($txt,$from,$to-$from); // retourne l'intégralité de l'entrée courante

// extrait les informations de l'entrée courante : link, description et title
ereg("<title>(.*)</title>",$cnews,$title);
$title= $title[1];
ereg("<description>(.*)</description>",$cnews,$descrip);
$descrip=$descrip[1];
ereg("<link>(.*)</link>",$cnews,$link);
$link=$link[1];

// affiche l'entrée courante
echo "$title".($descrip?" - $descrip":"")."
";

$n =$to; // passe à l'entrée suivante
}

Fiou à quand un parseur phpcs ? ^^
Merci pour vos commentaire !

2 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
16 mars 2006 à 16:58
Hello,

il y a plusieurs rss readers sur ce site. Cherche pour t'en inspirer et comparer.
Ce que je dis de ton code, moi c'est :
- ce serait plus simple (et plus propre) en utilisant les fonctions xml dédiées de php (un flus rss, c'est du xml), plus besoin de parser toi-même, pas vraiment. Tu récupères le flux, et tu fais juste une xsl pour le mettre en forme.

Si on ne prend pas en compte cette première remarque :
- ton code ne prend pas en compte les différentes versions des rss. Mais bon...
- ereg n'est pas la plus rapide des fonctions : preg_match_all serait plus adapté, avec les bons patterns. Ca t'éviterait tes subterfuges substr, strpos, et cie. Tu récupèr
- je récupèrerais TOUT le flux, moi, dans une chaine, avec file_get_contents () si possible.
0
ZuGbEn Messages postés 32 Date d'inscription lundi 14 octobre 2002 Statut Membre Dernière intervention 7 juillet 2007
16 mars 2006 à 17:43
Wooow c'est méga powerfull ces fonctions (je connaissais pas preg_match_all et file_get_contents (), j'ai qu'une vieille version d'un manuel php que j'ai lu et relu...)
Bon j'ai déjà changé pas mal de trucs comme tu m'as dit, et je vais me renseigner sur les fonctions php xml. Merci beaucoup !
0
Rejoignez-nous