9

サンプル変換:

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

これを処理できる小さなライブラリ関数はありますか?

4

3 に答える 3

27

私はユーティリティベルトにこの小さな機能を常に持っています:

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

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

すべてのHTML Entityで機能します。

編集:あなたは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;
}
于 2010-05-11T06:01:55.847 に答える
3

これがうまくいくように見えます:

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

ソース

于 2010-05-11T06:02:00.323 に答える
3

JavaScript で書かれた堅牢な HTML エンティティ エンコーダー/デコーダー。

https://mths.be/he

he (「HTML エンティティ」) は、JavaScript で書かれた堅牢な HTML エンティティ エンコーダ/デコーダです。HTML に従って標準化されたすべての名前付き文字参照をサポートし、あいまいなアンパサンドやその他のエッジ ケースをブラウザーと同じように処理し、広範なテスト スイートを備え、他の多くの JavaScript ソリューションとは対照的に、はアストラル Unicode シンボルをうまく処理します。オンラインデモが利用可能です。

于 2017-08-07T09:59:22.150 に答える