您的位置:首页 > 编程语言 > PHP开发

ZendFramework学习第三章(核心组件—过滤器之创建自定义过滤器)

2012-11-13 11:57 423 查看
Zend_Filter组件中已经定义了很多常用的过滤器。但是这满足不了我们的编程环境需要,比如有人在你的系统中写一些***暴力不干净的语句,什么“操你妈了”,“草拟大爷草拟妹”什么的。没关系,Zend_Filter还支持自定义过滤器哦亲~!这节就让我们一起学习自定义过滤器吧。

要编写自定义过滤器,需要自己定义一个类,并引用Zend_Filter_Interface接口。该接口定义了filter()方法,该方法可以在用户的类里被实现。使用Zend_Filter::addFilter()方法可以把一个实现该接口的对象添加到过滤器中(这是书上的句子,能看懂看,看不懂也没关系,估计是ZF的版本问题这句话应该有所修改。下边例子可以证实此书已经out了~!)。

下边给大家举个例子吧:

public function zdyjgAction()

{





$temp1="操你妈的,操你大爷的,操你妹的!!!"; //看到没,多么蛋疼的话啊。。。

echo $temp1;

echo "<p>";

$filter=new Application_Model_MyFilter(); //此处使用自定义类创建一个对象

echo $filter->filter($temp1); //调用类中的自定义过滤方法

}



这是控制器中的一个方法,调用了自定义类。然后在你的modles文件夹里边创建文件MyFilter.php文件,文件内容为:

<?php

//require_once 'Zend/Filter/Interface.php'; //我用的这个版本不写这句话貌似也可以哦亲 ,我是可以不知道你们写不写行不行。。。。。

class Application_Model_MyFilter implements Zend_Filter_Interface

{



public function filter($value)

{

$badlist=array("操你妈","操你妹","操你大爷"); //嘿嘿,把他们都过滤掉吧,当然你也可以写自己规则



for ($i=0;$i<count($badlist);$i++)

{

$value=str_replace($badlist[$i],"*", $value); //过滤指定的内容,将$value中的$badlist[$i]内容改为“*”。



}

return $value;



}



}

对于自定义过滤器也可以通过Zend_Filter的addFilter()方法将其添加到过滤链中去。

不解:

1.在测试过程中我一开始创建类时是这么写的 -class MyFilter implements Zend_Filter_Interface 这样写类不会被识别。挺蛋疼的吭。后来一哥们告诉我class Application_Model_MyFilter implements Zend_Filter_Interface这么个写法,就是类名不能直接那么写。。至于为什么,他说是没有配置多模块,具体配置多模块他也不会,碰钉子了呵呵!下边我会找些相关的知识研究一下什么配置多模块和大家分享,或者找些好文章。。

2.可能是版本问题吧,以前调用方法应该这么写:

public function zdyjgAction()

{

$filter=new Zend_Filter();

$filter->addFilter(new MyFilter());

$filter->filter($temp1);

现在这么写也可以哦:

$filter=new Application_Model_MyFilter(); //此处使用自定义类创建一个对象

echo $filter->filter($temp1); //调用类中的自定义过滤方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐