在JavaScript中解码HTML实体? 样本转换:

在JavaScript中解码HTML实体? 样本转换:,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(">"); // ">" 这对所有人都有效 编辑:由于您

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

我的实用腰带上始终有此小型函数:

function htmlDecode(input){
  var e = document.createElement('div');
  e.innerHTML = input;
  return e.childNodes[0].nodeValue;
}

htmlDecode("&"); // "&"
htmlDecode(">"); // ">"
这对所有人都有效

编辑:由于您不在DOM环境中,我认为您必须以“硬”的方式进行操作:

函数htmlDecode(输入){
返回输入。替换(/&;/g,“&”)
.替换(//g,“”);
//...
}
如果您不喜欢链式替换,可以构建一个对象来存储您的实体,例如:

function htmlDecode (input) {
  var entities= {
    "&": "&",
    "&lt;": "<",
    "&gt;": ">"
    //....
  };

  for (var prop in entities) {
    if (entities.hasOwnProperty(prop)) {
      input = input.replace(new RegExp(prop, "g"), entities[prop]);
    }
  }
  return input;
}
函数htmlDecode(输入){
var实体={
“&;”:“&”,
"": ""
//....
};
对于(实体中的var属性){
if(实体hasOwnProperty(prop)){
输入=输入。替换(新的RegExp(prop,“g”),实体[prop];
}
}
返回输入;
}

看起来这样可以:

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

一个用JavaScript编写的健壮的HTML实体编码器/解码器。


他(代表“HTML实体”)是一个用JavaScript编写的健壮的HTML实体编码器/解码器。它支持、处理和其他边缘情况,具有广泛的测试套件,并且-与许多其他JavaScript解决方案相反-他可以很好地处理astral Unicode符号

我没有document对象,这不应该依赖于它,因为我使用的是JSM XUL。您需要反向查找以解码实体。请查看我对bboe的评论
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;
}
function html_entity_decode(s) {
  var t=document.createElement('textarea');
  t.innerHTML = s;
  var v = t.value;
  t.parentNode.removeChild(t);
  return v;
}