ブログパーツのようなものを今趣味で開発中です。
その関係上PHPサイドで、Javascriptの文字列をエスケープしたくなりました。
ブログパーツのHTMLは適当なテンプレートエンジンを使って書きたいところです。
その結果をブログパーツのjsファイルにて、document.write()するにはPHPの文字列変数を渡すと、javascript的にvalidな文字列表現の形式にエスケープしてくれる関数がどうしても必要でした。
まじめに実装しようとした
UTF-8をUTF-32にコンバートして、一文字ごとにhex2binしてーみたいな感じでゴリゴリ書いてたのだが、3行ぐらい試しに書いたところで途中でめんどくさくなった。
jsonでいいじゃん
JSONは当然だが、Javascriptに対してvalidなリテラルだ。
json_encodeに文字列をぶち込めばそれだけでJavascriptとして適切にエスケープされた文字列が手に入る。
ただしダブルクォーテーションで囲まれた状態で値が返ってくるのが鬱陶しいので、最終的にはこうなった。
function escape_js_str($str) { return substr(json_encode($str), 1, -1); }
とりあえず使ってみている分には全く問題ない。
コメント