簡體   English   中英

在 JavaScript 中解碼 HTML 實體?

[英]Decode HTML entities in JavaScript?

示例轉換:

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

任何可以處理這個的小型庫函數?

我的實用腰帶上總是有這個小功能:

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

看起來像這樣:

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 實體編碼器/解碼器。

https://mths.be/he

he (代表“HTML 實體”)是一個用 JavaScript 編寫的強大的 HTML 實體編碼器/解碼器。 它支持所有標准化的 HTML 命名字符引用像瀏覽器一樣處理不明確的&符號和其他邊緣情況,具有廣泛的測試套件,並且——與許多其他 JavaScript 解決方案相反——可以很好地處理星體 Unicode 符號。 提供在線演示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM