HTMLの特殊文字をエスケープ (実体参照)

HTMLのマークアップに使用される文字「"」「&」「'」「<」「>」は、そのまま記述するとHTMLの記号と認識されるため表示することができません。よってそれを「&quot;」のような実体参照に置き換える必要があります。

関数による置き換え

次の関数ではマークアップの記号を正規表現で検索し、マッチした文字を対応する実体参照の文字列に置換して返します。

function escapeHTML( text )
{
    var replacement = function( ch )
    {
        var characterReference = {
            '"':'&quot;',
            '&':'&amp;',
            '\'':'&#39;',
            '<':'&lt;',
            '>':'&gt;'
        };

        return characterReference[ ch ];
    }

    return text.replace( /["&'<>]/g, replacement );
}

匿名関数を使用すれば、次のようにも書けます。

var escapedText = text.replace( /["&'<>]/g, function( ch ) { return { '"':'&quot;', '&':'&amp;', '\'':'&#39;', '<':'&lt;', '>':'&gt;' }[ ch ]; } );

Prototype.js

Prototype.jsを使用するならば、String.escapeHTML()が同様の処理を行います。ただしこのメソッドが対象とするのは、「&」「<」「>」の3文字です。