Utiliser le & avec dom.

Eléphant du PHP | 209 Messages

09 mars 2009, 00:10

Bonsoir,

donc voilà ma question qui est peut être toute bête mais j'obtiens toujours une erreur même avec CDATA...

Dans mon code, j'ai la ligne suivante :
$this->tag[$c]->appendChild(new DOMElement($tag, $content));
Le problème c'est qu'à un moment, j'ai content qui doit valoir ± (pour le caracère "plus ou moins") et évidemment j'obtiens une erreur... Donc ma question est : Y'a-t-il une solution ?

Merci.

Mammouth du PHP | 2937 Messages

09 mars 2009, 10:28

±
Il me semble qu'une entité XML numérique ne doit pas contenir de cractères hexadécimaux. De deux choses l'une : soit tu codes l'entité avec l'équivalent décimal de la notation hexadécimale (exemple :   pour l'espace insécable) soit tu inscris le caractère correspondant tel quel (en t'assurant que le codage employé le reconnaisse).

Eléphant du PHP | 73 Messages

09 mars 2009, 15:52

Est-ce que l'entité html ± pourrait remplacer ton caractère ± ?
Image Un bon maître a ce souci constant : enseigner à se passer de lui.

Mammouth du PHP | 2937 Messages

09 mars 2009, 17:50

Est-ce que l'entité html ± pourrait remplacer ton caractère ± ?
Sauf que cette entité HTML n'est pas reconnue comme entité XML.

Eléphant du PHP | 209 Messages

09 mars 2009, 20:26

En fait c'est plus compliqué que ça.
Il s'agit d'un "bug" : http://bugs.php.net/bug.php?id=31191
La conversion n'est pas assurée par le constructeur de DOMElement !

J'ai donc remplacé mon code par le suivant :
$e = $this->dom->createElement($tag);
$t = $this->dom->createTextNode($content);

$e->appendChild($t);

$this->tag[$c]->appendChild($e);
Sachant que le caractère doit être donné en faisant un copier-coller (i.e. ±) et non en donnant ± ou ± car le & est converti en & ce qui provoque l'affichage du texte ± ou ± au lieu du caractère voulu.