MTタグをJSで使う場合に使用するグローバルモディファイア
2008年10月28日 21:22
ある案件でJS内の文字列にMTタグで出力した値を使用していて、アポストロフィがシングルクォーテーションとぶつかってJSのエラーを起こしているというケースに遭遇しました。
その時行った回避策を紹介します。
グローバルモディファイア「regex_replace」を使用する
「regex_replace」はMTタグで出力された値を正規表現を使ってその値を置換することができるグローバルモディファイアです。
使用方法は「regex_replace="/A/","B"」の形で用い、「A」を「B」に置換します。
JSで使うときの回避策を考えた時になぜかこちらの方が先に浮かびました。
こちらのやりかただと、正規表現を書かなきゃならないし、エスケープする文字も個別に書かなきゃならない。
正規表現をあまり知らない自分としては非常にハードルの高い策でした。
半日ほど費やし、完成したところでもう一つの回避策に気付きました。
グローバルモディファイア「encode_js」を使用する
「encode_js」はMTタグで出力された値をJSの文字列として使えるようにエンコードをしてくれるグローバルモディファイアです。ま、見たままです。
使い方も簡単。「encode_js="1"」をモディファイアとしてタグに挿入するだけ。
半日格闘してこのモディファイアの存在を思い出した自分にすごくガッカリしました。。。
今まで使ったことがないとは言え、確実に「regex_replace」よりは目にしてるはずなのに、なぜ半日も気づかなかったのか。。。
結論としては、どちらでもエラーを回避できたので「regex_replace」、「encode_js」でもどちらでも問題ないかと思います。
ただ、「encode_js」の方がはるかに簡単ですので、「encode_js」の方を使うことをお勧めします。










