サンプル変換:
& -> `&`
> -> `>`
これを処理できる小さなライブラリ関数はありますか?
私はユーティリティベルトにこの小さな機能を常に持っています:
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(/</g, "<")
.replace(/>/g, ">");
//...
}
連鎖置換が気に入らない場合は、エンティティを格納するオブジェクトを作成できます。たとえば、次のようになります。
function htmlDecode (input) {
var entities= {
"&": "&",
"<": "<",
">": ">"
//....
};
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;
}
he (「HTML エンティティ」) は、JavaScript で書かれた堅牢な HTML エンティティ エンコーダ/デコーダです。HTML に従って標準化されたすべての名前付き文字参照をサポートし、あいまいなアンパサンドやその他のエッジ ケースをブラウザーと同じように処理し、広範なテスト スイートを備え、他の多くの JavaScript ソリューションとは対照的に、彼はアストラル Unicode シンボルをうまく処理します。オンラインデモが利用可能です。