Smartyの修飾子regex_replaceでマッチした値を参照する
preg_replace("/^(\d{2,})(\d{4})(\d{4})/", "$1-$2-$3", $number);
のようなことをSmartyのテンプレートで修飾子regex_replaceを使ってやりたかったのだけど、
以下のようにやってもうまくいかない。
{$number|regex_replace : "/^(\d{2,})(\d{4})(\d{4})/" : "$1-$2-$3"}
まずコロンの前後にスペースを入れてはいけないらしい。
あと、{}も駄目っぽい。
マッチした文字列を参照できないのかと思ったけどそうでもないらしく(http://www.ironhearts.com/diary/archives/000365.html)、ダブル・クオートではなくシングル・クオートでくくればいいらしい。
それでできたのがこれ。
{$number|regex_replace:'/^(\d\d+)(\d\d\d\d)(\d\d\d\d)/':'$1-$2-$3'}