Есть ли функция js, которая заменяет специальный символ xml их escape-последовательностью? - PullRequest
6 голосов
/ 27 марта 2012

Я много раз искал в Интернете и не нашел функции js, которая заменяет специальный символ xml их escape-последовательностью?
Есть ли что-то подобное?

Я знаю следующее:

Special Character   Escape Sequence Purpose  
&                   &           Ampersand sign 
'                   '          Single quote 
"                   "          Double quote
>                   >            Greater than 
<                   &lt;            Less than

есть еще?как насчет записи шестнадцатеричного значения, такого как 0 × 00,
Это тоже проблема?

Ответы [ 6 ]

10 голосов
/ 27 марта 2012

Я использовал это:

function htmlSpecialChars(unsafe) {
    return unsafe
    .replace(/&/g, "&amp;")
    .replace(/</g, "&lt;")
    .replace(/>/g, "&gt;")
    .replace(/"/g, "&quot;");
}
3 голосов
/ 27 марта 2012

Здесь есть интересная библиотека JS: Кодировка и декодирование HTML на стороне клиента

2 голосов
/ 27 марта 2012

Вы можете использовать PHP htmlspecialchars из проекта PHPJS .

1 голос
/ 14 сентября 2017

Это похоже на Могу ли я избежать специальных символов html в javascript?

Принимается ответ:

function escapeHtml(unsafe) {
    return unsafe
         .replace(/&/g, "&amp;")
         .replace(/</g, "&lt;")
         .replace(/>/g, "&gt;")
         .replace(/"/g, "&quot;")
         .replace(/'/g, "&#039;");
 }

Однако, если вы используете lodash, мне нравится ответ cs01 из этого поста:

_.escape('fred, barney, & pebbles');
// => 'fred, barney, &amp; pebbles'
0 голосов
/ 17 октября 2018

Это старый, но мой любимый способ сделать это - дать браузеру понять:

function encodeXML(data){
    var d = document.createElement('div');
    d.appendChild(document.createTextNode(data));
    return d.innerHTML;
}

encodeXML('&');

Вывод:

"&"

Вы также можете использовать d.innerText = data; или d.textContent = data;, но createTextNode() поддерживает большинство браузеров.

0 голосов
/ 27 марта 2012

Это единственные персонажи, о которых вам нужно беспокоиться.

Как правило, вы должны использовать интерфейс DOM для создания XML-документов, тогда вам не нужно беспокоиться о ручном экранировании. Это становится проблемой, только если вы собираете строки для создания XML.

...