---
Array (2)
0 => Array (2)
page_nm => "トップ"
page_sysnm => "top"
1 => Array (3)
page_nm => "Smartyマニュアル"
page_sysnm => "manual_smarty"
this => 1
---
アウトプットフィルタアウトプットフィルタ
テンプレートが
display() 又は
fetch()
を経由して呼び出された時、出力は1つ又は複数のアウトプットフィルタを通して送られます。
これは
ポストフィルタ とは異なります。
コンパイルされたテンプレートがポストフィルタによって、
テンプレートがディスクに保存される前に処理されるのに対し、
アウトプットフィルタはテンプレートが実行される時にその出力を処理します。
アウトプットフィルタは、
登録する
か、あるいは load_filter()
関数や
$autoload_filters 変数によって
プラグインディレクトリ から読み込みます。
Smarty は内部でユーザ定義関数の第1パラメータにコンパイルされたテンプレートのソースコードを渡すので、
関数内で処理を行った後にその結果のソースコードを戻り値として返すようにします。
例 15-4. アウトプットフィルタを使用する
<?php // このユーザ定義関数をアプリケーションに加えます function protect_email($tpl_output, &$smarty) { $tpl_output = preg_replace('!(\S+)@([a-zA-Z0-9\.\-]+\.([a-zA-Z]{2,3}|[0-9]{1,3}))!', '$1%40$2', $tpl_output); return $tpl_output; }
// アウトプットフィルタを登録します $smarty->register_outputfilter('protect_email'); $smarty->display('index.tpl');
// これによりテンプレート出力に含まれるいくつかのemailアドレスは // スパムボットからシンプルな保護を受けるでしょう ?>
|
|
register_outpurfilter()、
load_filter()、
$autoload_filters、
ポストフィルタ および
$plugins_dir
も参照してください。