Parser PHP probleme UTF-ISO accent
Résolu
Rhumiz
-
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 :
Voici les différentes premières lignes de mes fichiers xml :
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
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
A voir également:
- Parser PHP probleme UTF-ISO accent
- Power iso 32 bit - Télécharger - Gravure
- Fichier iso - Guide
- Télécharger iso windows 10 - Guide
- E accent minuscule - Guide
- Easy php - Télécharger - Divers Web & Internet
1 réponse
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 ^^)
Merci merci !
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 !