Version complète: sur le forum Webmaster Hub : Flux RSS qui ne s'affiche pas proprement
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
thick
Bonjour,

J'utilise le parser ci-dessous pour afficher les derniers billets du blog sur la homepage de PokerFurie.com
Par contre, comme vous pouvez le voir, ça ne s'affiche pas correctement. Je ne sais pas ce qui se passe pour certains accents et il y a l'URL du lien qui s'affiche à la fin du résumé.
J'utilise Feeburner pour optimiser le flux, donc je ne sais pas si le problème vient du parser ou d'un réglage Feedburner.
Par contre, c'est bien la première fois que j'ai un souci avec ce parser, donc je cale sur la solution sad.gif
Merci pour votre aide
CODE
<?
// on va lire le fichier xml
$site = "http://feeds.feedburner.com/furiedupoker"; // remplacez par l'adresse !
$fp = _AT_fopen($site,"r");
while(!feof($fp)) $raw .= _AT_fgets($fp, 4096);
fclose($fp);

// on le rend lisible
if(eregi("<item>(.*)</item>", $raw, $rawitems ) ) {
$items = explode("<item>", $rawitems[0]);

// on l'exploite
for( $i = 0; $i < count($items)-1; $i++ ) {
eregi("<title>(.*)</title>",$items[$i+1], $title );
eregi("<description>(.*)</description>",$items[$i+1], $description);
eregi("<link>(.*)</link>",$items[$i+1], $link );
echo "- <b><a href='".$link[1]."' target='_blank'
title='".$title[1]."'>".$title[1]."</a></b> :
".$description[1]."<br>\n";
}
}
?>
Kioob
Hello,

pour les accents il s'agit probablement d'un problème d'encodage : le flux est bien en UTF-8 mais ta home page n'indique pas l'encodage dans les entêtes (la balise meta n'est pas suffisante).

Après pour le "parser", j'ai la flème de tenter un décryptage du truc.

Quelques remarques toutefois :
- pour une lecture "binaire", utiliser fread() plutot que fgets(), plus rapide. Voir même dans le cas présent un file_get_contents().
- eregi et ses copines sont déconseillées depuis PHP 4 et vont disparaitre dans PHP 6 ; il serait peut être temps de passer aux équivalents preg_XX wink.gif
- un vrai parser XML n'aurait il pas été plus simple ?
thick
Merci pour tes conseils.
Tu me surprends en disant que la meta n'est pas suffisante pour signifier l'encodage. Que faut-il faire de plus ?
Qu'est ce que tu appelles un "vrai" parser ? C'est vrai que j'utilise celui-ci depuis 2004, mais il convenait bien.
Pourrais-tu m'indiquer un meilleur parser ? Merci
Kioob
Pour l'encodage, c'est à ma connaissance l'entête HTTP qui prime sur celui du contenu. Pour moi celui présent dans le contenu sert surtout en cas d'utilisation "hors ligne".

Actuellement ton serveur envoi l'entête HTTP "Content-Type: text/html" ; généralement on voit "Content-Type: text/html; charset=iso-8859-1
". Utilises l'extension LiveHeaders de Firefox, tu verras de quoi il retourne.

Pour ce qui est du parser, je verrais un vrai parser XML (SimpleXML ?) ou carrément un parseur RSS, il doit y en avoir pas mal également.
thick
J'ai éradiqué la description en attendant de comprendre ce qui se passe au niveau de l'encodage.
Par contre, SimpleXML m'a l'air très sympa. Cela me semble simple et efficace wink.gif

Merci pour tes précisions.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.