Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML
XML Forum d'entraide sur XML avec PHP. Exemples : SimpleXML, OpenXML... Avant de poster -> FAQ XML, Cours XML et Sources XML
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/01/2008, 15h30   #1
Futur Membre du Club
 
Inscription : novembre 2005
Messages : 115
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 115
Points : 19
Points : 19
Par défaut [Encodage] Problème avec un quote !

Bonjour a tous!!
Je suis devant un problème qui me bloque depuis un moment..et honnetement je ne comprends pas!!
J'ai un fichier xml que je dois parser, puis récupérer les infos, et je dois insérer ces infos dans une base de données...
Le problème est que je me retrouve dans ma base de données avec des ? à la place de certains quotes ...(alors que les accents passent très bien).
Certains quotes passent et d'autres non!
J'ai fait un copier coller des titres qui ne passent pas et de ceux qui passent dans bloc note pour voir la différence...et en effet il y a une différence entre les guillemets!
ceux qui passe s'affiche comme ça dans bloc note : '
ceux qui ne passent pas s'affiche comme ça : ’ (ou comme une virgule mais en l'air, servant d'apostrophe)
j'ai eu beau faire des str_replace
Code :
1
2
3
 
         echo str_replace("’","'",$title)."<br />";
         echo str_replace("&rsquo;","'",$title)."<br />";
rien n'y fait!!
je n'arrive pas à cibler ce caractère pour le mettre comme un quote normal!!
Avez vous une petite idée du pourquoi du comment ??
Je ne comprends plus rien la...
Merci beaucoup a vous!!
gui38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2008, 16h34   #2
Nouveau Membre du Club
 
Étudiant
Inscription : décembre 2007
Messages : 66
Détails du profil
Informations personnelles :
Âge : 24

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2007
Messages : 66
Points : 25
Points : 25
As-tu essayer en remplacant ton caractère par son code html ?

Je pense que c'est : &acute;
Takis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2008, 16h48   #3
Futur Membre du Club
 
Inscription : novembre 2005
Messages : 115
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 115
Points : 19
Points : 19
Merci de ta réponse...
Je viens d'essayer mais ça ne marche pas non plus!

J'ai fait aussi un autre test en récupérant la valeur ascii de l'apostrophe qui ne marchait pas...ça m'a retourné le caractère 63, et la j'ai cru que c'était bon que j'allais pouvoir faire mes remplacements...mais bon fausse joie car le caractère 63 correspond au caractère ?
donc toujours au même point...je suis bien bloqué!!
gui38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2008, 17h45   #4
Membre actif
 
Avatar de pimpmyride
 
Inscription : décembre 2005
Messages : 303
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 303
Points : 156
Points : 156
essaye de qualifer ta variable $title en lui associant le bon encodage de caractere.

utf8-encode()
iconv()
pimpmyride est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2008, 17h52   #5
Membre du Club
 
Inscription : mai 2006
Messages : 45
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mai 2006
Messages : 45
Points : 41
Points : 41
bonjour
essayer cette solution ça marche chez moi j'espère que ça vas marcher chez toi.
d'abord l'entete du fichier xml doit etre comlmeç&
Code :
<?xml version="1.0" encoding="iso-8859-1"?>
puis aprè la lecture du fichier utilise la fonction
exemple
fichier xml(test.xml):
Code :
1
2
3
4
5
6
7
8
9
10
11
 
<?xml version="1.0" encoding="iso-8859-1"?>
<root>
<famille nom="SmashingCoding">
<membres>
  <membre nom="To’m" type="contributeur" />
  <membre nom="l'enfant Gérald" type="contributeur" />
  <membre nom="Nic'olas" type="contributeur" />
 </membres>
</famille>
</root>
fichier php:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
<?php
$file = 'test.xml';
# On initialise l'objet $xml
$xml = simplexml_load_file($file);
//$xml = utf8_decode($xml);
//var_dump($xml);
 
echo '<p>Liste des membres :</p><p>';
foreach($xml->famille as $famille) {
 echo '<br /><br /><br />famille:'.utf8_decode($famille['nom']);
 foreach($famille->membres as $membres) {
  foreach($membres as $membre) {
    echo '<br />membre:'.utf8_decode($membre['nom']);
  }
 }
}
?>
</p>
mbounou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2008, 17h56   #6
Futur Membre du Club
 
Inscription : novembre 2005
Messages : 115
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 115
Points : 19
Points : 19
Merci à vous deux pour les réponses
J'ai essayé ça aussi, mais ça ne fonctionne pas...(de plus l'entete de mon fichier xml sera forcément <?xml version="1.0" encoding="UTF-8" ?>)

par contre en faisant des recherche, j'ai trouvé que "les fichiers html édités par word étaient codés en windows-1252 qui est un sur-ensemble de l'ISO8859-1.En particulier, il est susceptible d'inclure des caractères non affichables sur toutes les plateformes. Ceci concerne notamment les caractères quote-droite et quote-gauche, ces caractères apparaissent comme des "?". "
Donc il y a de forte chance que le xml que je parse ait été créé avec word et que donc il me trimballe des caractères non affichables!!!
Bon j'avance un petit peu!!il ne me manque pluqu'a trouver comment ne pas avoir c'est caractères la dans mon fichier xml!!ca doit bien etre faisable!
gui38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2008, 18h07   #7
Membre actif
 
Avatar de pimpmyride
 
Inscription : décembre 2005
Messages : 303
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 303
Points : 156
Points : 156
!!! Words c'est mal !!!

Essaye ceci, ca m'a autrefois fait gagner du temps.

Copie/colle ton texte words dans le bloc note. Ensuite, tu re copie/colle le texte dans ton fichier xml, puis tu lance ton script de parse.

Les problemes liés à l'encodage 'pourrie' de words devrait être résolu
pimpmyride est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2008, 18h17   #8
Futur Membre du Club
 
Inscription : novembre 2005
Messages : 115
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 115
Points : 19
Points : 19
c'est que que ça pourrait etre beau! ça ne tiendrait qu'a moi je n'aurais jamais fait du xml avec word!!
Mais le problème est que le xml vient pas de chez moi mais de l'extérieur...bon il y a toujours la solution de leur dire "euh dites vous pouvez évitez d'utiliser Word??"
Mais bon si je peux éviter...
gui38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2008, 18h22   #9
Membre actif
 
Avatar de pimpmyride
 
Inscription : décembre 2005
Messages : 303
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 303
Points : 156
Points : 156
j'ai eu ce probleme pour de l'integration de texte, c'etait pas du xml, et en gros je preferais faire la manip à la main que de coder un script.
C'etait une tache non reguliere et qui me prenait peu de temps. Ce qui n'est pas ton cas.

essaye d'utiliser la fonction iconv
pimpmyride est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 11h09   #10
Futur Membre du Club
 
Inscription : novembre 2005
Messages : 115
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 115
Points : 19
Points : 19
pfffff...je n'y arrive pas non plus!! c'est quand même incroyable que je n'arrive pas à remplacer ce fichu caractere windows-1252 par un caractère classique!! ça doit quand même bien être possible!! Encore une belle trouvaille de microsoft cette surclasse de l'iso, windows-1252!!!
Bon je continue mes recherches...
gui38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2008, 11h58   #11
Futur Membre du Club
 
Inscription : novembre 2005
Messages : 115
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 115
Points : 19
Points : 19
Bon j'ai trouvé un truc qui marche...c'est assez laid mais bon ça me dépanne en attendant de trouver mieux.
Pour ceux que ça intéressent voila ce que j'ai fait:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
//je recupere le contenu du fichier xml a parser
$contents = file_get_contents($pathtofile);
 
//je le code en entités html
$temp = htmlentities($contents);
//je remplace le code qui de cette saleté d'apostrophe (& a c i r c ; € ™ => ce code est super bizarre d'ailleurs (sans les espaces)) par une apostrophe normale
$temp2 = str_replace("& a c i r c ; € ™ ","'",$temp);
//je redecode le contenu du fichier xml pour ne plus avoir les entités
$contents = html_entity_decode($temp2);
 
//je parse le contenu xml du fichier
$result = xml2array($contents,1);
J'espère trouver plus propre d'ici peu, mais bon ça a l'air de marcher...
Un avis sur ce code?
Merci.
A+
gui38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h41.


 
 
 
 
Partenaires

Hébergement Web