javascript - 一种解码 HTML 实体的简单 JavaScript 方法,适用于浏览器和 Node

标签 javascript html node.js decode

如何将   ' 等 HTML 实体解码为其原始字符?

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

在 NodeJS 中,我们可以使用一些第三方库,例如 html-entities

如果我们想使用纯 JavaScript 来完成这项工作怎么办?

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

我在下面发表了我的意见作为答案。我希望它能对某人有所帮助。 :)

最佳答案

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

对于像   这样的 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);
    });
}

此工具也适用于 Node.js 环境。

decodeEntities("&#21704;&#21704;&nbsp;&#39;&#36825;&#20010;&#39;&amp;&quot;&#37027;&#20010;&quot;&#22909;&#29609;&lt;&gt;") //哈哈 '这个'&"那个"好玩<>

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

我无法对现有帖子发表评论或回答,所以这是我现在唯一能做的。

编辑 1

我认为this答案比我的还要好。尽管没有人投他一票。

关于javascript - 一种解码 HTML 实体的简单 JavaScript 方法,适用于浏览器和 Node,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44195322/

相关文章:

html - Bootstrap : How to force form-inline in mobile?

php - 如何使用codeigniter从 Controller 为 View 的标签赋值

node.js - 除了关联表的对象之外,Sequelizejs 还返回 id

javascript - Node js 服务器未加载我的网站文件

javascript - 想设置ul的li innerHTML

html - 我不能在一个 html 元素上放置 "style"和 "class"属性吗?

javascript - 服务器端未定义 renderProps/React/React-Router + Node/Express.js 的同构渲染

javascript - 如果值等于或在 jquery 中选择,则附加选择选项

javascript - Ajax 完成回调不等待不是函数

javascript - node.js Date#getTime() 有什么作用?