Version complète: sur le forum Webmaster Hub : Pb str_replace et fichier en UTF-8
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
Grasshopper
Bonjour à tous,

Je galère depuis ce matin sur un truc.
J'ai un script qui lit un fichier xml dans lequel je souhaite remplacer une chaine :

CODE
$xml = file_get_contents($fichier);
$xml = str_replace("{URL}","http://www.site.tld/",$xml);


Le problème, c'est que ca ne remplace rien là...
Le fichier est en UTF-8 je ne sais si c'est ça le problème. (je ne peux pas les transformer en iso).

Vous voyez pas d'ou vient le problème ?
Kioob
Hello,

question (vraiment) bête : ta variable $xml, tu en fais quoi après le str_replace ? biggrin.gif
captain_torche
Pourquoi pas tenter un
CODE
str_replace(utf8_encode("{URL}"),utf8_encode("http://www.site.tld/"),$xml);
Grasshopper
kioob, pour l'instant j'en fais un echo, pour voir le contenu.

Captain, ca ne change rien...
D'ailleurs si je lance une fonction de détection UTF-8 du fichier, PHP ne me le détecte pas en UTF-8.
Mais si je l'édite en hexa, ca ressemble quand même bien à de l'utf-8, what else ?

edit : l'édition du fichier en hexa m'a permi de voir qu'il commencait par "FF FE", ce qui voudrait dire qu'il est en utf-16...
Bon, maintenant il faut que je voie comment gérer l'utf-16...
Kioob
Oki, effectivement s'il s'agit d'UTF-16, ça change la donne. Je suis loin d'être expert en la matière, mais pour le coup je verrais bien un coup de mb_ereg_replace(), non ?

PS : normalement dans un fichier XML l'encodage est précisé non ?
Grasshopper
C'est bon, j'ai créé une petite fonction d'encodage en utf-16 qui fera l'affaire.
Ensuite je fais un str_replace sur ces chaines réencodées et ca marche !

Youpi la fete smile.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.