Smarty の default_modifiers は良い発想だと思うのだが、実装には問題あり...

問題

foreach でも処理されてしまう... orz
<{foreach item=e from=$v}>
  <{$e}>

とかすると二重に修飾子が実行されてしまう...

しかたないので foreach では smarty:nodefaults する?
と思ったら...

オブジェクトが使えない?
<{foreach item=e from=$v|smarty:nodefaults}>
  <{$e->getStr()}>

なぜこれが動かないのだ?

prefilter で回避する

世の中には賢い人がいますね。
http://d.hatena.ne.jp/hironobusan/20071204/1196737266
おぉ、すごいですねぇ。こんなことができるんだ。
Smarty に手を入れなくて良いのがいいねぇ...

ただ、1点だけ...
正規表現が '(\$?[^ \}]+)/i' となっているが、これだとすべての smarty タグに反応してしまう...
そうすると、除外条件に cycle とかあれやこれやといれなくてはいけないような気が...
'(\$[^ \}]+)/i' とすれば <{$ で始まるときだけエスケープしてくれるので、これがいいような...
そうすれば除外条件の部分も必要なし?