小编典典

解码JavaScript中的HTML实体?

html

转换示例:

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

任何小的库函数都可以解决这个问题?


阅读 461

收藏
2020-05-10

共1个答案

小编典典

我经常在工具带上有这个小功能:

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

htmlDecode("&"); // "&"
htmlDecode(">"); // ">"

它将适用于所有HTML实体。

编辑: 由于您不在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;
}
2020-05-10