输出过滤器
一旦通过display()或fetch()调用一个模板,其输出可以被送往一个或多个输出过滤器。这个和后过滤器的不同在于,后过滤器操作的是一个编译过的模板,并在编译后的模板保存到磁盘之前;而输出过滤器在模板执行时才开始对模板进行操作。
输出过滤器可以被注册,或者从插件目录中用load_filter()函数调入,或者设置$autoload_filters变量而调用。Smarty将模板输出作为第一个参数传递,并期望函数返回处理后的结果。
例子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。