jQueryを使ってphpで言うところのstrip_tagsとかhtmlspecialcharsする方法

以下のコードは状況により脆弱性が発生する可能性があるため別の方法で実装ください。

先日始めてsquidの設定を行いました。agoです。

今日はjQueryを使ってphpで言うところのstrip_tagsとかhtmlspecialcharsする方法を紹介したいと思います。

普通jQueryを使ってescapeする場合、$().text()で要素を追加すればいいのですが、これだと「文字列template内に埋め込むために事前に文字列をescapeしたい」や、「ユーザの入力値はescapeしたいけど、改行をbrに変換するから$().text()で要素を追加したくない」といった場合に使えるかもしれません。

具体的には以下のようなコードを読み込むことによって$.strip_tags()や$.htmlspecialchars()が使えるようになります。

jQuery.extend({
    'strip_tags' : function (text) {
        return $('<div>').html(text).text();
    },
    'htmlspecialchars' : function (text) {
        return $('<div>').text(text).html();
    }
});

phpのものとは実装が違うので同じ結果にはなりませんが、手軽に実装できるので覚えておくと便利かもしれません。 (ただし、この方法だとtext中の改行が削除されるのでご注意ください)

カヤックではjQueryもphpもいける技術者を募集しています!