PHPでJavascript向けに文字列をエスケープする

コンピュータ

ブログパーツのようなものを今趣味で開発中です。
その関係上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);
  }

とりあえず使ってみている分には全く問題ない。

コメント

タイトルとURLをコピーしました