【问题标题】:Decode HTML entities in JavaScript?在 JavaScript 中解码 HTML 实体?
【发布时间】:2018-01-14 05:08:55
【问题描述】:

示例转化:

 & -> `&`
 >  -> `>`

任何可以处理这个的小型库函数?

【问题讨论】:

    标签: javascript html html-entities


    【解决方案1】:

    我的实用腰带上总是有这个小功能:

    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(/&lt;/g, "<")
                  .replace(/&gt;/g, ">");
                  //...
    }
    

    如果您不喜欢链式替换,您可以构建一个对象来存储您的实体,例如:

    function htmlDecode (input) {
      var entities= {
        "&amp;": "&",
        "&lt;": "<",
        "&gt;": ">"
        //....
      };
    
      for (var prop in entities) {
        if (entities.hasOwnProperty(prop)) {
          input = input.replace(new RegExp(prop, "g"), entities[prop]);
        }
      }
      return input;
    }
    

    【讨论】:

    • 请看我对 bboe 的评论
    【解决方案2】:

    看起来会这样:

    function html_entity_decode(s) {
      var t=document.createElement('textarea');
      t.innerHTML = s;
      var v = t.value;
      t.parentNode.removeChild(t);
      return v;
    }
    

    Source

    【讨论】:

    • 我没有文档对象,这不应该依赖它,因为我使用的是 JSM XUL。
    • 您可以使用依赖于表查找的代码 (phpjs.org/functions/htmlentities:425)。您需要反转查找以解码实体。
    【解决方案3】:

    用 JavaScript 编写的强大的 HTML 实体编码器/解码器。

    https://mths.be/he

    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.

    【讨论】:

      猜你喜欢
      • 2012-05-29
      • 2013-09-15
      • 2011-02-24
      • 2013-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多