JavaScriptで動的にWebページの内容を書き換える場合に、文字列のHTMLエスケープをしたい時がある。具体的には、「& " ' < >」の5つを変換したい。 PHPならhtmlSpecialChars()、Railsならh()でよいが、JavaScriptにはHTMLエスケープ用の関数が用意されていないので自分で書く必要がある。 せっかくなので、Twitterでつぶやける文字数以内で書くことを目指してみる。 で、こうなった。 function h(s){return s.replace(/[&"'<>]/g,function(m){return"&"+["amp","quot","#039","lt","gt"]["&\"'<>".indexOf(m)]+";"})} 123文字。 意外と余裕だ。 クォーテーションのエスケープをしないでいいなら(HTML要素の属性値のHTMLエスケ