用JavaScript解码HTML实体?

时间:2010-05-11 05:55:23

标签: javascript html html-entities

样本转换:

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

任何可以处理此问题的小型库函数?

3 个答案:

答案 0 :(得分:25)

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

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;
}

答案 1 :(得分:3)

看起来会这样:

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

Source

答案 2 :(得分:1)

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

https://mths.be/he

(对于“HTML实体”)是一个用JavaScript编写的健壮的HTML实体编码器/解码器。它支持all standardized named character references as per HTML,处理ambiguous ampersands和其他边缘情况just like a browser would,具有广泛的测试套件,并且 - 与许多其他JavaScript解决方案相反 - 处理星体Unicode符号就好了。 An online demo is available.