jQueryでPHPのhtmlspecialchars()使う方法!
WEB開発を行っているサーバサイドではなく、クライアントサイドのJavaScriptでフォームの入力値をエスケープしたい場合が意外に多くあります。
PHPではhtmlspecialchars()というメソッドでタグなどをエスケープしてタグを無効化できますが、Javascriptにはそれがなく、正規表現を用いてreplace()するなどの方法になってきます。
ただPHPとJavascriptで開発を行う場合できれば同じメソッドがあるとやりやすいと思い作ってみました。
以下をhtmlspecialchars.jsとして保存してください。
htmlspecialchars.js
(function($) { $.extend({ htmlspecialchars: function htmlspecialchars(ch){ ch = ch.replace(/&/g,"&") ; ch = ch.replace(/"/g,""") ; ch = ch.replace(/'/g,"'") ; ch = ch.replace(/</g,"<") ; ch = ch.replace(/>/g,">") ; return ch ; } }); })(jQuery);
もちろんこんな風にプラグイン化する必要はありませんが、自作プラグインなどに追加しておくと何かと便利ですのでこうしてます。
そして以下のように読み込んで、
<script type="javascript" src="jquery.js"></script> <script type="javascript" src="htmlspecialchars.js"></script> <script type="javascript" src="script.js"></script>
あとはscript.jsなどを用意して以下のように使用してください。
var escaped = $.htmlspecialchars("<script>alert("ほげほげ")</script>");
これでscriptタグなどは無効化できます。