输出过滤器

当通过display()fetch()来调用模板的时候, 输出的内容将会经过一个或者多个输出过滤器来进行处理。 对比 后置过滤器,后置过滤器是在模板编译后但没有被存储到编译文件前调用,输出过滤器是模板执行后准备输出时调用。

输出过滤器可以通过注册过滤器来调用, 或者放置到插件目录中,用 loadFilter()函数或者 设置$autoload_filters来调用。 Smarty把准备输出的内容作为第一个参数传递到函数中,并期待函数返回经过处理的内容。


Example 17.13. 使用输出过滤器

  1. <?php
  2. // 在PHP程序中
  3. function protect_email($tpl_output, Smarty_Internal_Template $template)
  4. {
  5. $tpl_output =
  6. preg_replace('!(\S+)@([a-zA-Z0-9\.\-]+\.([a-zA-Z]{2,3}|[0-9]{1,3}))!',
  7. '$1%40$2', $tpl_output);
  8. return $tpl_output;
  9. }
  10.  
  11. // 注册过滤器
  12. $smarty->registerFilter("output","protect_email");
  13. $smarty->display("index.tpl");
  14.  
  15. // 现在,所有显示的电子邮件地址都会经过简单保护,以防止垃圾邮件爬虫
  16. ?>
  17.  

参见 registerFilter(), loadFilter(), $autoload_filters, 后置过滤器$plugins_dir.

原文: https://www.smarty.net/docs/zh_CN/advanced.features.outputfilters.tpl