thick Posté 1 Avril 2008 Posté 1 Avril 2008 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 lisibleif(eregi("<item>(.*)</item>", $raw, $rawitems ) ) {$items = explode("<item>", $rawitems[0]);// on l'exploitefor( $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 Posté 1 Avril 2008 Posté 1 Avril 2008 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 ?
thick Posté 1 Avril 2008 Auteur Posté 1 Avril 2008 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 Posté 1 Avril 2008 Posté 1 Avril 2008 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 Posté 1 Avril 2008 Auteur Posté 1 Avril 2008 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.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant