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
- E accent aigu minuscule - Guide
- Télécharger iso windows 10 - 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 !