HTML エンティティデコード [重複] 質問する

HTML エンティティデコード [重複] 質問する

JavaScript または JQuery を使用して HTML エンティティをエンコードおよびデコードするにはどうすればよいですか?

var varTitle = "Chris' corner";

私はこうありたい:

var varTitle = "Chris' corner";

ベストアンサー1

回答として受け入れられた jQuery コードの使用はお勧めしません。このコードでは、デコードする文字列がページに挿入されるわけではありませんが、スクリプトや HTML 要素などが作成されます。これは、必要以上に多くのコードです。代わりに、より安全で最適化された関数を使用することをお勧めします。

var decodeEntities = (function() {
  // this prevents any overhead from creating the object each time
  var element = document.createElement('div');

  function decodeHTMLEntities (str) {
    if(str && typeof str === 'string') {
      // strip script/html tags
      str = str.replace(/<script[^>]*>([\S\s]*?)<\/script>/gmi, '');
      str = str.replace(/<\/?\w(?:[^"'>]|"[^"]*"|'[^']*')*>/gmi, '');
      element.innerHTML = str;
      str = element.textContent;
      element.textContent = '';
    }

    return str;
  }

  return decodeHTMLEntities;
})();

http://jsfiddle.net/LYteC/4/

この関数を使用するには、 を呼び出すだけdecodeEntities("&amp;")で、jQuery バージョンと同じ基礎技術が使用されますが、jQuery のオーバーヘッドはなく、入力内の HTML タグがサニタイズされます。マイク・サミュエルのコメントHTML タグを除外する方法についての受け入れられた回答について。

この関数は、プロジェクトに次の行を追加することで、jQuery プラグインとして簡単に使用できます。

jQuery.decodeEntities = decodeEntities;

おすすめ記事