Пример из CMS, хотя и хороший, не принимает во внимание, что, например, «скриптовые» вещи будут анализироваться в div и затем вообще не возвращаться.
Итак, я написал следующее простое расширение для прототипа строк
if (!String.prototype.unescapeHTML) {
String.prototype.unescapeHTML = function() {
return this.replace(/&[#\w]+;/g, function (s) {
var entityMap = {
"&": "&",
"<": "<",
">": ">",
'"': '"',
''': "'",
'/': "/"
};
return entityMap[s];
});
};
}
Это сохранит "сценарии" в тексте и не удалит их
Пример
I will make things bad <b>because evil</b>
<script language="JavaScript">console.log('EVIL CODE');</script>
удалит часть «script» в стиле CMS, но со строкой unescapeHTML она сохранит ее