84 votes

Comment rendre les chaînes "XML Safe" ?

Je réponds à un appel AJAX en lui envoyant un document XML via PHP echos. Pour former ce document XML, je passe en revue les enregistrements d'une base de données. Le problème est que la base de données contient des enregistrements qui contiennent des symboles « < ». Donc naturellement, le navigateur jette une erreur à cet endroit particulier. Comment cela peut-il être réparé ?

12voto

Elvith Points 165

1) Vous pouvez envelopper votre texte comme CDATA comme ceci :

<mytag>
    <![CDATA[Your text goes here. Btw: 5<6 and 6>5]]>
</mytag>

voir http://www.w3schools.com/xml/xml_cdata.asp

2) Comme quelqu'un l'a déjà dit : Échappez à ces chars. Par exemple, comme ceci :

5&lt;6 and 6&gt;5

7voto

Mosiur Points 431

Essayez ceci :

$str = htmlentities($str,ENT_QUOTES,'UTF-8');

Ainsi, après avoir filtré vos données htmlentities(), vous pouvez utiliser les données en balise XML comme :

<mytag>$str</mytag>

6voto

Ed Schembor Points 2945

Si possible, c'est toujours une bonne idée de créer votre XML en utilisant les classes XML plutôt que la manipulation de chaîne - l'un des avantages étant que les classes échapperont automatiquement aux caractères selon les besoins.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X