修正子でPHP関数

2007/01/23 | Smarty

Smartyの修正子は、標準装備の修正子のほかに、カスタムで作成した修正子も使用できるし、PHPの関数も修正子として利用できる(普段、普通に使用していた)。
しかし修正子としてstr_replaceを使うと、なぜかうまく動いてくれなくて、理由がわからない(例によってSmartyのソースを読むのが嫌だから)。いろいろ調べて、Smarty標準装備のreplaceという修正子で対応できることがわかった(当然こちらを使うのが正統派)。

ではなぜstr_replaceはダメなのか。

ウェブを調べていたら「暗黙的な修正子としてPHP関数を・・・」という記述があった。どうやらPHP関数によってはうまく動作しないものがあるようだ(だから標準の修正子を使えって話なのだろう)。


マニュアルを少し読んでみた。
修正子にPHP関数を使用する場合、使用された変数は、その関数の第一引数として渡される。だから{$text|str_replace:”a”:”b”}のように記述すると、

str_replace(“a”,”b”,$text) //こんな具合に動いて欲しいのに
str_replace($text,”a”,”b”) //こんな具合に動いてしまう

こういうことなんだろう。

コメントを残す


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net