有谁知道如何在Javascript
中将特殊字符转换为HTML
示例:
&
(与号)变为&
."
(双引号)时变为set.'
(单引号)仅当ENT_NOQUOTES
为set.<
(小于)时变为'
(单引号)变为<
.>
(大于)变为>
. (大于)时ENT_QUOTES
变为ENT_QUOTES
发布于 2009-04-24 05:15:01
您需要一个函数来执行以下操作
return mystring.replace(/&/g, "&").replace(/>/g, ">").replace(/</g, "<").replace(/"/g, """);
但考虑到您希望对单引号/双引号进行不同的处理。
发布于 2009-04-24 06:06:39
在我看来,最好的方法是使用浏览器内置的HTML转义功能来处理许多情况。为此,只需在DOM树中创建一个元素并将该元素的innerText
设置为您的字符串即可。然后检索元素的innerHTML
。浏览器将返回一个HTML编码的字符串。
function HtmlEncode(s)
{
var el = document.createElement("div");
el.innerText = el.textContent = s;
s = el.innerHTML;
return s;
}
测试运行:
alert(HtmlEncode('&;\'><"'));
输出:
&;'><"
Prototype JS library也使用这种转义HTML的方法,尽管与我给出的简单示例不同。
注意:您仍然需要自己转义引号(双引号和单引号)。您可以使用其他人在这里概述的任何方法。
发布于 2009-04-24 14:45:01
此泛型函数将每个非字母字符编码为其htmlcode (数字):
function HTMLEncode(str) {
var i = str.length,
aRet = [];
while (i--) {
var iC = str[i].charCodeAt();
if (iC < 65 || iC > 127 || (iC>90 && iC<97)) {
aRet[i] = '&#'+iC+';';
} else {
aRet[i] = str[i];
}
}
return aRet.join('');
}
https://stackoverflow.com/questions/784586
复制相似问题