显然,这比我想象的更难找到。它甚至是如此简单......
是否有与 PHP内置在 JavaScript中的htmlspecialchars等效的功能?我知道自己实现它相当容易,但是使用内置函数(如果可用)会更好。
对于那些不熟悉 PHP 的人,htmlspecialchars 会将类似的东西翻译<htmltag/>成<htmltag/>
<htmltag/>
<htmltag/>
我知道这一点escape(),encodeURI()但不要这样工作。
escape()
encodeURI()
您的解决方案代码存在问题 - 它只会转义每个特殊字符的第一次出现。例如:
escapeHtml('Kip\'s <b>evil</b> "test" code\'s here'); Actual: Kip's <b>evil</b> "test" code's here Expected: Kip's <b>evil</b> "test" code's here
这是正常工作的代码:
function escapeHtml(text) { return text .replace(/&/g, "&") .replace(/</g, "<") .replace(/>/g, ">") .replace(/"/g, """) .replace(/'/g, "'"); }
下面的代码将产生与上面相同的结果,但它的性能更好,特别是在大文本块上(感谢jbo5112)。
function escapeHtml(text) { var map = { '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }; return text.replace(/[&<>"']/g, function(m) { return map[m]; }); }