Discussion:
XML et "&"
(trop ancien pour répondre)
Yanick
2007-02-23 14:03:51 UTC
Permalink
Dans une application Web développée en utilisant beaucoup de requêtes
XML (AJAX) en arrière plan, à des scripts PHP, je me suis rendu compte
que, d'après ce paragraphe (http://www.w3.org/TR/xml/#syntax), le
caractère "&" (ampersand) ne peut être affiché que par "&" ou
"&". Les fichiers XML (et tous les fichiers de l'application
d'ailleurs) sont encodés avec le ISO-8859-1 (j'ai essayé UTF-8, mais
cela ne règle rien puisque ce n'est pas une erreur d'encodage et que
je préfère travailler avec le ISO-8859-1).

Malheureusement, l'orsque j'utilise htmlentities() pour encoder les
chaînes, le navigateur me donne une erreur comme quoi "é" n'est
pas une entité reconnue. Dois-je comprendre qu'il faut (encore) que je
me fasse une petite fonction maison pour changer que les entités
néessaires ou PHP contient déjà quelque chose d'utilie pour ce cas ?

Merci.
Thierry
2007-02-23 15:46:38 UTC
Permalink
bonjour,

si tu veux utiliser é dans un fichier xml il faut que tu définisses
cette entité dans une DTD associée au fichier xml

mais si tu gères correctement ton header xml
<?xml version='1.0' encoding='iso-8859-1' ?>
le é passe parfaitement dans le fichier xml.

il n'y a que le & qui pose (à ma connaissance) vraiment pb.

pour une solution en PHP
$str = strtr($str, array('&' => '&#38;'));
est ton ami

PS: si tu as toujours des pbs c'est peut être que tu utilises
http://fr.php.net/manual/fr/ref.xsl.php
qui, selon mon expérience, ne marche vraiment bien
qu'en utf-8.
Thief13
2007-02-23 21:12:36 UTC
Permalink
$eacute n'est pas une entité prédéfinit de XML. XML ne reconnais que les
entités &amp pour &, &quot pour ", &lt; pour < et &gt; pour >. Le mieux
si tu ne veux changer que les entités prédéfini, c'est d'utiliser
htmlspecialchars().
Etienne SOBOLE
2007-03-01 11:52:04 UTC
Permalink
htmlspecialchars() est ton amis je pense...

a+
etienne
Post by Yanick
Dans une application Web développée en utilisant beaucoup de requêtes
XML (AJAX) en arrière plan, à des scripts PHP, je me suis rendu compte
que, d'après ce paragraphe (http://www.w3.org/TR/xml/#syntax), le
caractère "&" (ampersand) ne peut être affiché que par "&#38;" ou
"&amp;". Les fichiers XML (et tous les fichiers de l'application
d'ailleurs) sont encodés avec le ISO-8859-1 (j'ai essayé UTF-8, mais
cela ne règle rien puisque ce n'est pas une erreur d'encodage et que
je préfère travailler avec le ISO-8859-1).
Malheureusement, l'orsque j'utilise htmlentities() pour encoder les
chaînes, le navigateur me donne une erreur comme quoi "&eacute;" n'est
pas une entité reconnue. Dois-je comprendre qu'il faut (encore) que je
me fasse une petite fonction maison pour changer que les entités
néessaires ou PHP contient déjà quelque chose d'utilie pour ce cas ?
Merci.
Yanick
2007-03-01 22:15:04 UTC
Permalink
Merci ! Je crois que j'ai passé par-dessus cette function.
Post by Etienne SOBOLE
htmlspecialchars() est ton amis je pense...
a+
etienne
Continuer la lecture sur narkive:
Loading...