Этот фрагмент кода работает как заклинание в обоих направлениях, кодировании и декодировании. На вход идет строка и возвращает обработанную строку.
В нем не предусмотрено слишком много настроек, но работает отлично (по крайней мере, чтобы иметь всего пару строк). Обратите внимание, что метод кодирования преобразует каждый отдельный символ в его HTML-символ.
Если вы хотите заменить только те странные символы, которые нарушают ваш HTML (<,>,/, и т. д.), не используйте этот метод.
(function(window){
window.htmlentities = {
/**
* Converts a string to its html characters completely.
*
* @param {String} str String with unescaped HTML characters
**/
encode : function(str) {
var buf = [];
for (var i=str.length-1;i>=0;i--) {
buf.unshift(['&#', str[i].charCodeAt(), ';'].join(''));
}
return buf.join('');
},
/**
* Converts an html characterSet into its original character.
*
* @param {String} str htmlSet entities
**/
decode : function(str) {
return str.replace(/&#(d+);/g, function(match, dec) {
return String.fromCharCode(dec);
});
}
};
})(window);
Код создает глобальную переменную (в window) с именем htmlentities. Этот объект содержит 2 метода encode и decode.
Чтобы преобразовать обычную строку в символы HTML, используйте метод encode:
htmlentities.encode("Ночью я чинила глобус, Словно слесарь, как хирург. Я поймала аэробус И вернула в Петербург.");
// Output
"Ночью я чинила глобус, Словно слесарь, как хирург. Я поймала аэробус И вернула в Петербург."
Чтобы преобразовать закодированную HTML-строку в читаемые символы, используйте метод decode:
htmlentities.decode("Ночью я чинила глобус, Словно слесарь, как хирург. Я поймала аэробус И вернула в Петербург.");
// Output
"Ночью я чинила глобус, Словно слесарь, как хирург. Я поймала аэробус И вернула в Петербург."
Примечание: вы можете свободно копировать каждую функцию и включать ее в свой проект по своему усмотрению.
В PHP есть функция html_entity_decode() аналогичная методу decode.