一种简单的JavaScript方式来解码HTML实体,可以在浏览器和节点上工作

一种简单的JavaScript方式来解码HTML实体,可以在浏览器和节点上工作,javascript,html,node.js,decode,Javascript,Html,Node.js,Decode,如何解码HTML实体,如'到其原始字符 在浏览器中,我们可以创建一个DOM来实现这个技巧(),也可以使用一些库,如 在NodeJS中,我们可以使用一些第三方库,比如 如果我们想使用普通JavaScript来完成这项工作呢 stackoverflow中有许多类似的问题和有用的答案,但我找不到一种既适用于浏览器又适用于Node.js的方法。所以我想和大家分享我的观点 我已将我的意见发布在下面作为答案。我希望它能帮助某人。:) stackoverflow中有许多类似的问题和有用的答案,但我找不到

如何解码HTML实体,如
'到其原始字符

在浏览器中,我们可以创建一个DOM来实现这个技巧(),也可以使用一些库,如

在NodeJS中,我们可以使用一些第三方库,比如

如果我们想使用普通JavaScript来完成这项工作呢


stackoverflow中有许多类似的问题和有用的答案,但我找不到一种既适用于浏览器又适用于Node.js的方法。所以我想和大家分享我的观点


我已将我的意见发布在下面作为答案。我希望它能帮助某人。:)

stackoverflow中有许多类似的问题和有用的答案,但我找不到一种既适用于浏览器又适用于Node.js的方法。所以我想和大家分享我的观点

用于html代码,如
&39甚至汉字。

我建议使用这个功能。(受其他一些答案的启发)

函数解码实体(encodedString){
var translate_re=/&(amp|quot|lt|gt);/g;
变量转换={
“nbsp”:“,
“amp”:“&”,
“quot”:“\”,
“lt”:”
};
返回encodedString.replace(转换、函数(匹配、实体){
返回翻译[实体];
}).替换(/&#(\d+);/gi,函数(匹配,numStr){
var num=parseInt(numStr,10);
返回字符串.fromCharCode(num);
});
}
此实现也适用于Node.js环境

decode实体(&&21704;&&21704;&39;&36825;&20010;&39;&37027;&20010;&22909;&29609;)//哈哈 '这个'&"那个"好玩

作为一个新用户,我只有1个声誉:(

我不能对现有的帖子发表评论或回答,所以这是我目前唯一能做的

编辑1


我认为答案甚至比我的更好。尽管没有人放弃投票。

这应该真的有效。确保编码是一样的,软件包通过遵循HTML规范而不是依赖手动维护的字典来解决这个问题。这将丢失很多HTML实体,例如
”
&scaron、 
等。所有html实体的综合列表相当长:
function decodeEntities(encodedString) {
    var translate_re = /&(nbsp|amp|quot|lt|gt);/g;
    var translate = {
        "nbsp":" ",
        "amp" : "&",
        "quot": "\"",
        "lt"  : "<",
        "gt"  : ">"
    };
    return encodedString.replace(translate_re, function(match, entity) {
        return translate[entity];
    }).replace(/&#(\d+);/gi, function(match, numStr) {
        var num = parseInt(numStr, 10);
        return String.fromCharCode(num);
    });
}