Il n'y a rien intégré (sauf innerHTML
sérialisation qui est super douteux à cet effet), vous auriez à écrire vous-même, par exemple .:
function encodeXml(s) {
return (s
.replace(/&/g, '&').replace(/"/g, '"').replace(/'/g, ''')
.replace(/</g, '<').replace(/>/g, '>')
.replace(/\t/g, '	').replace(/\n/g, '
').replace(/\r/g, '
')
);
}
Ceci est une fonction qui se échappe maximaliste pour la sécurité :
il sera toujours encoder "
, '
et onglet/caractères CR/LF mais ils ne doivent être échappé à une valeur d'attribut, où ce caractère de citation particulière est utilisé comme séparateur.
il codera toujours >
bien que cela ne doit réellement être échappé qu'une partie de la séquence ]]>
dans le contenu du texte.
Si vous n'avez pas besoin de ces propriétés, vous pouvez supprimer les replace
s vous ne avez pas besoin (il est assez rare d'avoir besoin de mettre onglet/CR/LF dans une valeur d'attribut, par exemple).
Si vous avez besoin de produire du XHTML compatible HTML, utilisez '
au lieu de '
si vous avez besoin de cette évasion.
En général, vous devriez éviter htmlentities
et utiliser htmlspecialchars
à la place, comme htmlentities
code inutilement tous les caractères non-ASCII comme références des entités HTML, ce qui a aussi des effets secondaires de vissage votre texte si vous ne donnez pas le droit $charset
paramètre.