输出过滤器
当通过display()
或 fetch()
来调用模板的时候, 输出的内容将会经过一个或者多个输出过滤器来进行处理。 对比 后置过滤器
,后置过滤器是在模板编译后但没有被存储到编译文件前调用,输出过滤器是模板执行后准备输出时调用。
输出过滤器可以通过注册过滤器来调用, 或者放置到插件目录中,用 loadFilter()
函数或者 设置$autoload_filters
来调用。 Smarty把准备输出的内容作为第一个参数传递到函数中,并期待函数返回经过处理的内容。
- <?php
- // 在PHP程序中
- function protect_email($tpl_output, Smarty_Internal_Template $template)
- {
- $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->registerFilter("output","protect_email");
- $smarty->display("index.tpl");
- // 现在,所有显示的电子邮件地址都会经过简单保护,以防止垃圾邮件爬虫
- ?>
参见 registerFilter()
, loadFilter()
, $autoload_filters
, 后置过滤器 和 $plugins_dir
.
原文: https://www.smarty.net/docs/zh_CN/advanced.features.outputfilters.tpl