Нет ничего встроенного (за исключением сериализации innerHTML
, которая для этой цели очень сложна), вам придется написать это самостоятельно, например .:
function encodeXml(s) {
return (s
.replace(/&/g, '&').replace(/"/g, '"').replace(/'/g, ''')
.replace(/</g, '<').replace(/>/g, '>')
.replace(/\t/g, '	').replace(/\n/g, '
').replace(/\r/g, '
')
);
}
Это максимальная экранирующая функция для безопасности:
он всегда будет кодировать символы "
, '
и tab / CR / LF, хотя их необходимо экранировать только в значении атрибута, где этот конкретный символ кавычки используется в качестве разделителя.
он всегда будет кодировать >
, хотя на самом деле его необходимо экранировать, только когда часть последовательности ]]>
в текстовом содержимом.
Если вам не нужны эти свойства, вы можете удалить replace
, которые вам не нужны (например, довольно редко нужно указывать tab / CR / LF в значении атрибута).
Если вам нужно создать HTML-совместимый XHTML, используйте '
вместо '
, если вам нужен этот escape.
Как правило, вам следует избегать htmlentities
и использовать вместо него htmlspecialchars
, так как htmlentities
излишне кодирует все не-ASCII-символы в качестве ссылок на сущности HTML, что также имеет побочный эффект, приводящий к искажению текста, если дать ему правильный $charset
параметр.