Traitement feed XML et caractères accentués

WRInaute passionné
Bonjour,

j'utilise le script suivant pour afficher les derniers posts issus d'un feed:

Code:
<?php
$fichier_xml = "http://actualites.prepa-hec.org/feed/";
$nombre_limite = 7;
$raw="";$file = fopen($fichier_xml,"r");
if ($file) {    while (!feof($file)) $raw .= fread($file,32000);    
fclose( $file );    
if(eregi("<item>(.*)</item>",$raw,$rawitems)){        
$items = explode("<item>", $rawitems[0]);        
$nb = count($items);        
$maximum = (($nb-1) < $nombre_limite) ? ($nb-1) : 
$nombre_limite;        for ($i=0;$i<$maximum;$i++) {            
eregi("<title>(.*)</title>",$items[$i+1], $title);            
eregi("<link>(.*)</link>",$items[$i+1], $url);                        
echo "<li><a href=\"".$url[1]."\" target=\"_blank\">".$title[1]."</a></li>";            
}        
}    
}?>

Seul problème, les caractères accentués dans les titres ne s'affichent pas ou mal.

Savez-vous comment résoudre ce problème ?

Merci d'avance
 
WRInaute occasionnel
ok j'ai eu la même merdouille.

Les caractères d'un flux (ou d'une page) sont codés soit en utf8 soit en iso.

Si ton fichier php qui prend le feed est en iso et que le feed est en utf8 alors tous les caractères spéciaux sont daubés.

idem si php en utf8 et feed en iso

utf8_encode prend de l'iso et le met en utf8
utf8_encode prend de l'utf8 et le met en iso

Là tu as un pb de caractère spécial, soit ton php est en utf8 et ton feed en iso, dans ce cas tu fais un utf8_encode sur le contenu du feed, soit ton php est en iso et ton feed est en utf8 et là tu fais donc un utf8_decode

En gros tu fais l'un et l'autre et tu regardes lequel marche.

PS. c'est une horreur ce truc quand on connait pas!!
 
Nouveau WRInaute
Je déterre ce sujet pour remercier theJB car après avoir passer plus d'une heure à chercher sur le web, sa solution s'avère être la bonne pour le problème qui se posait à moi. En effet, j'ai voulu utiliser le tutoriel sur la création de flux RSS utilisant une classe php5 que j'ai trouvé sur un autre site. J'ai adapté le script à mon projet personnel mais je n'arrivais pas à afficher correctement les accents du titre et de la description du flux lui-même et voilà le bidouillage par lequel j'ai résolu mon problème!
Code:
	$titreutf8=utf8_decode("Flux RSS des actualités");
	        $descriptionutf8=utf8_decode('Les dernières actualités directement par flux RSS');
		// Création des entêtes du flux RSS
		$oRssFeed = new RSSFeed('iso-8859-15');
		$oRssFeed->setProtectString(true);
		$oRssFeed->setTitle($titreutf8);
		$oRssFeed->setDescription($descriptionutf8);

RSSFeed est en iso-8859-15 car c'est comme cela que sont codées les données de ma bdd.

Donc un grand merci à theJB :)
 
Discussions similaires
Haut