显然,这比我想象的要难找到。而且甚至很简单…
是否有与Javascript中内置的PHP 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]; }); }