HTMLのマークアップに使用される文字「"」「&」「'」「<」「>」は、そのまま記述するとHTMLの記号と認識されるため表示することができません。よってそれを「"」のような実体参照に置き換える必要があります。
次の関数ではマークアップの記号を正規表現で検索し、マッチした文字を対応する実体参照の文字列に置換して返します。
function escapeHTML( text )
{
var replacement = function( ch )
{
var characterReference = {
'"':'"',
'&':'&',
'\'':''',
'<':'<',
'>':'>'
};
return characterReference[ ch ];
}
return text.replace( /["&'<>]/g, replacement );
}
匿名関数を使用すれば、次のようにも書けます。
var escapedText = text.replace( /["&'<>]/g, function( ch ) { return { '"':'"', '&':'&', '\'':''', '<':'<', '>':'>' }[ ch ]; } );
Prototype.jsを使用するならば、String.escapeHTML()が同様の処理を行います。ただしこのメソッドが対象とするのは、「&」「<」「>」の3文字です。