`
kisa77
  • 浏览: 28221 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

Smarty的输出过滤功能outputfilter

    博客分类:
  • PHP
阅读更多

最近项目中遇到一个问题:
    页面显示前需要对可能出现的违禁词过滤,之前的做法是使用fetch函数得到编译后的html做正则替换,因为页面不同位置需要设置不同的缓存时间,共执行了三次,导致页面耗时多了0.2s.其实在第一次坐下过滤就足够了,之后访问的都是过滤后的安全内容.
    翻看smarty源码可知fetch函数执行是页面已经进行了缓存.所以必须在smarty编译前过滤.


    方法1:采用smarty插件的形式,在页面display或fetch之前使用load_filter函数。

    例:

 

 $smarty->load_filter('output','censor'); //censor为插件名字

    插件代码:

 

function smarty_outputfilter_censor($source, &$smarty)
{
	include(ROOT .'/config/Censor.php');	
	$source = empty($sysCensor['filter']) ? $string : preg_replace($sysCensor['filter']['find'], $sysCensor['filter']['replace'], $source);
    return $source;
}
 

这种方法不好的地方就是一旦使用该函数,之后执行的代码都会受影响。如果只想对部分页面进行过滤操作,可以使用下面这种

 

方法2:

使用smarty的register_outputfilter函数来调用自定义的过滤函数

 

$smarty->register_outputfilter(array($this->sysFun,'replaceCensor'));	

 register_outputfilter的参数为array($object,$method),可以任意调用A类下面的B方法进行过滤。再使用unregister_outputfilter函数即可对范围内的页面进行过滤

 

$smarty->unregister_outputfilter(array($this->sysFun,'replaceCensor'));	
 

mark一下,做积累

 

 

分享到:
评论

相关推荐

    php+smarty输出新闻列表

    php+smarty输出资讯列表,生成html静态

    smarty手册.chm

    unregister_outputfilter [注销输出过滤器] unregister_postfilter [注销提交过滤器] unregister_prefilter [注销预过滤器] unregister_resource [注销资源] 14. Caching [缓存] Setting Up Caching [建立缓存]...

    Smarty中文手册 chm版

    unregister_outputfilter [注销输出过滤器] unregister_postfilter [注销提交过滤器] unregister_prefilter [注销预过滤器] unregister_resource [注销资源] 14. Caching [缓存] Setting Up Caching [建立缓存]...

    Smarty

    Smarty Smarty Smarty

    smarty安装与入门

    在PHP的世界里已经出现了各式各样的模板类,但就功能和速度来说Smarty还是一直处于领先地位,因为Smarty的功能相对强大,所以使用起来比其他一些模板类稍显复杂了一点。现在就用30分钟让您快速入门。 一. 安装 ...

    smarty高级特性之过滤器的使用方法

    主要介绍了smarty高级特性之过滤器的使用方法,结合实例形式分析了smarty过滤器的相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    用smarty做的留言板功能

    用smarty做的留言板功能,使用的是PHP语言,简单的小功能。

    yaf扩展smarty模板

    自己摸索的扩展方法,之前在官网看到的方法有一点问题,可能是没更新吧,大家共同学习~

    smarty3.0,smarty最新版本

    smarty3.0,smarty最新版本

    Smarty_smarty_

    Smarty 模板引擎教程,内容主要有基本语法、变量、组合修改器、内建函数、自定义函数、配置文件、控制台调试、缓存、插件扩展、使用技巧和经验等,比较详细的一个中文手册

    Smarty最新版下载自Smarty官网

    Smarty最新版官网,Smarty最新版下载自Smarty官网

    smarty3 的应用详解

    $smarty= Smarty::instance(); 模板 之前的smarty模板,相当于重新定义了一套标签语言,那么smarty3提供了一种新的模板形式,直接支持php语法的模板。 但是问题就出来了,我们还有必要用模板吗? 引用php类型模板...

    smarty-中文文档

    在Smarty的程序里,这些被忽略了。模板设计者们编辑模板,组合使用html标签和模板标签去格式化这些要素的输出(html表格,背景色,字体大小,样式表,等等)。有一天程序员想要改变文章检索的方式(也就是程序逻辑的改变)。这...

    php模版 (smarty)php模版 (smarty)php模版 (smarty)

    php模版 (smarty)php模版 (smarty)php模版 (smarty)php模版 (smarty)php模版 (smarty)php模版 (smarty)php模版 (smarty)

    smarty运算符

    php5会使用的smarty运算符,smarty是在php前期使用中常见的模版分离,同时国内鼎鼎大名的ecshop也是采用这样方式开发系统

    smarty实例

    smarty开发的实例,以smarty实现留言本的功能,

    使用smarty模板模仿ecshop功能的程序(附开发手册详细)

    这是我开发过的用smarty模板模仿ecshop功能开发的程序,使用时只需要导入数据库,修改配置文件即可,附带开发手册(详细),有什么不明白的直接加本人QQ:1094230936

    自己写的smarty小框架

    smarty 迷你

    smarty中section的使用

    smarty中section的使用 smarty section php

    smarty模板中文手册

    1. 速度:采用Smarty编写的程序可以获得最大速度的提高,这一点是相对于其它的模板引擎技术而言的。 2. 编译型:采用Smarty编写的程序在运行时要编译成一个非模板技术的PHP文件,这个文件采用了PHP与HTML混合的...

Global site tag (gtag.js) - Google Analytics