Parser PHP probleme UTF-ISO accent

Résolu
Rhumiz -  
 Rhumiz -
Bonjour,
Petite présentation, je suis informaticien dans les systèmes de supervision et je m'adonne depuis quelque jour à un petit projet perso en PHP. J'ai des petites bases, mais la j'avoue avoir du mal :xJ'utilise un Parser PHP pour découper plusieurs flux rss (xml) et enrichir une bdd MySQL.
Mon problème est que certain flux sont en UTF-8 et d'autres en iso-8859-1, du coup dans certains cas les caractères avec accents sont insérés correctement et dans d'autres cas non : /J'ai trouvé une partie de solution sur CCM avec l'utilisation de la fonction utf8_decode($chaine), qui converti correctement les caractères UTF en iso.
Cependant les flux en iso se retrouver avec des "?" à la place des caractères avec accents, alors qu'avant c'était parfait ...Voici mon parser PHP :
function lit_rss($fichier,$objets) {
	// on lit tout le fichier
	if($chaine = @implode("",@file($fichier[0]))) {
		// on découpe la chaine obtenue en items
		$tmp = preg_split("/<\/?"."item".">/",utf8_decode($chaine));

		// pour chaque item
		for($i=1;$i<sizeof($tmp)-1;$i+=2)
			// on lit chaque objet de l'item
			foreach($objets as $objet) {

				// on découpe la chaine pour obtenir le contenu de l'objet
				$tmp2 = preg_split("/<\/?".$objet.">/",$tmp[$i]);

				// on ajoute le contenu de l'objet au tableau resultat
				$resultat[$i-1][] = @$tmp2[1];
			}

		// on retourne le tableau resultat
		return $resultat;
	}
}

Voici les différentes premières lignes de mes fichiers xml :
<?xml version="1.0" encoding="UTF-8"?>
<?xml version='1.0' encoding='iso-8859-1'?>

En fonction du type d'encoding je souhaiterai utiliser la fonction utf8_decode() ou pas.
Si quelqu'un peu me transmettre une fonction permettant de vérifier l'encoding du fichier avant de lancer le parser ça me ferait très plaisir :o)

Merci d'avance à vous tous

1 réponse

  1. Rhumiz
     
    Je m'auto répond :D

    1] j'ouvre le fichier xml
    2] j'extrais les 50premiers octets
    3] conditionnelle recherche de UTF ou utf
    4] exécution de la bonne procédure (bon la ça fait un echo, mais on se comprend ^^)

    	### Lire chaque ligne du résultat SQL ###
    	while($un_flux = mysql_fetch_row($lst_flux))
    	{
    	
    	echo "$un_flux[0] <br>";
    	$f = fopen("$un_flux[0]","r");
    	$ligne = fread($f, 50);
    	$chaineMAJ = "UTF";
    	$chaineMIN = "utf";	
    	echo "$ligne <br>";
    	if ((!strpos($ligne, $chaineMAJ)) && (!strpos($ligne, $chaineMIN)))
    	{
    		echo "UTF non trouvé <br>";
    	}
    	else
    	{
    		echo "===============>>> Ce fichier est en UTF <br>";
    	}
    
    	fclose($f);
    	}


    Merci merci !
    0