HTML タグを HTML エンティティとしてエスケープする最も速い方法は? 質問する

HTML タグを HTML エンティティとしてエスケープする最も速い方法は? 質問する

私はChrome拡張機能を書いていますが、多く次のジョブの: 文字列をサニタイズするかもしれない、およびをそれぞれ<>および&に変換することにより、HTML タグを含めます。&lt;&gt;&amp;

(言い換えれば、PHP と同じですhtmlspecialchars(str, ENT_NOQUOTES)。二重引用符文字を変換する必要は実際にはないと思います。)

これは私がこれまでに見つけた中で最も速い関数です:

function safe_tags(str) {
    return str.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;') ;
}

しかし、数千の文字列を一度に実行する必要がある場合、依然として大きな遅延が発生します。

これを改善できる人はいますか? 違いがあるかどうかはわかりませんが、これは主に 10 文字から 150 文字までの文字列に適用されます。

(私が考えたアイデアの 1 つは、大なり記号をエンコードしないことです。これで実際に何か危険があるでしょうか?)

ベストアンサー1

これを行う方法の 1 つを次に示します。

var escape = document.createElement('textarea');
function escapeHTML(html) {
    escape.textContent = html;
    return escape.innerHTML;
}

function unescapeHTML(html) {
    escape.innerHTML = html;
    return escape.textContent;
}

デモはこちらです。

おすすめ記事