可能重复:
How to escape HTML
如何在JavaScript中将字符串转换为HTML?
e.g。
var unsafestring = "<oohlook&atme>";
var safestring = magic(unsafestring);
其中safestring
现在等于"<ohhlook&atme>"
我正在寻找magic(...)
。
我没有在magic
使用JQuery。
答案 0 :(得分:49)
function htmlEntities(str) {
return String(str).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
}
然后使用var unsafestring = "<oohlook&atme>";
,您将使用htmlEntities(unsafestring);
答案 1 :(得分:26)
最常用的方法是使用jQuery实现此目的:
var safestring = $('<div>').text(unsafestring).html();
如果要对所有HTML实体进行编码,则必须使用库或自行编写。
您可以使用比jQuery更紧凑的库,例如HTML Encoder and Decode
答案 2 :(得分:24)
不要打扰编码。请改用文本节点。文本节点中的数据保证被视为文本。
document.body.appendChild(document.createTextNode("Your&funky<text>here"))
答案 3 :(得分:11)
您需要转发<
和&
。逃避>
也不会伤害:
function magic(input) {
input = input.replace(/&/g, '&');
input = input.replace(/</g, '<');
input = input.replace(/>/g, '>');
return input;
}
或者你让DOM引擎为你做脏工作(使用jQuery,因为我很懒):
function magic(input) {
return $('<span>').text(input).html();
}
这样做是创建一个虚拟元素,将您的字符串指定为 textContent (即没有特定于HTML的字符具有副作用,因为它只是文本),然后您检索该元素的HTML内容 - 这是文本,但在必要的情况下将特殊字符转换为HTML实体。
答案 4 :(得分:-4)
唯一需要转义的字符是<
。 (>
在标签之外毫无意义。)
因此,您的“神奇”代码是:
safestring = unsafestring.replace(/</g,'<');