【发布时间】:2018-01-14 05:08:55
【问题描述】:
示例转化:
& -> `&`
> -> `>`
任何可以处理这个的小型库函数?
【问题讨论】:
标签: javascript html html-entities
& -> `&`
> -> `>`
任何可以处理这个的小型库函数?
【问题讨论】:
标签: javascript html html-entities
我的实用腰带上总是有这个小功能:
function htmlDecode(input){
var e = document.createElement('div');
e.innerHTML = input;
return e.childNodes[0].nodeValue;
}
htmlDecode("&"); // "&"
htmlDecode(">"); // ">"
它适用于所有HTML Entities。
编辑:由于您不在 DOM 环境中,我认为您将不得不以“硬”的方式进行:
function htmlDecode (input) {
return input.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">");
//...
}
如果您不喜欢链式替换,您可以构建一个对象来存储您的实体,例如:
function htmlDecode (input) {
var entities= {
"&": "&",
"<": "<",
">": ">"
//....
};
for (var prop in entities) {
if (entities.hasOwnProperty(prop)) {
input = input.replace(new RegExp(prop, "g"), entities[prop]);
}
}
return input;
}
【讨论】:
看起来会这样:
function html_entity_decode(s) {
var t=document.createElement('textarea');
t.innerHTML = s;
var v = t.value;
t.parentNode.removeChild(t);
return v;
}
【讨论】:
he(用于“HTML 实体”)是用 JavaScript 编写的强大的 HTML 实体编码器/解码器。它支持all standardized named character references as per HTML,处理ambiguous ampersands 和其他极端情况just like a browser would,具有广泛的测试套件,并且——与许多其他JavaScript 解决方案相反——he 可以很好地处理星体Unicode 符号。 An online demo is available.
【讨论】: