Aller au contenu

Flux RSS qui ne s'affiche pas proprement


Sujets conseillés

Posté

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 :(

Merci pour votre aide

<?
// 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";
}
}
?>

Posté

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 ;)

- un vrai parser XML n'aurait il pas été plus simple ?

Posté

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

Posté

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.

Posté

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 ;)

Merci pour tes précisions.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...