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

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);                             //调用类中的自定义过滤方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值