ZendFramework (核心组件—过滤器 Zend_Filter 使用方法)

过滤器就是对输入的内容过滤,清除其中不符合过滤规则的内容,并将其余的内容返回的过程,对用户输入的内容进行无害化处理。
 
过滤器的使用方法
 
过滤器使用分为两种,一种是使用单个过滤器,一种是使用过滤器链,都是用Zend_Filter组件完成的。
 

 

使用单个过滤器
 
Zend_Filter中已经事先定义很多常用的的过滤器子类。要使用这些过滤器,首先要加载相应的组件,然后为类实例化对象,再调用对象的filter()方法即可。如下:
 
      $filter=new Zend_Filter_StringToLower();     //StringToLowerz 这个呢是
     $temp1="abcdEFGHIGKLMNopqrstuvwXYz";
     $temp2="我爱BeiJing天安门";
     
     echo "内容:".$temp1."<p>经过滤后:";
     echo $filter->filter($temp1);
     echo "<p>";
     echo "内容:".$temp2."<p>经过滤后:";
     echo $filter->filter($temp2);
 

 

使用过滤链
 
过滤链就是多个过滤器的一个连接。在对指定的内容进行过滤时,每个过滤器将按照其顺序分别进行过滤或者转化操作。当所有的过滤操作都被执行完毕时,过滤链返回最终的过滤结果。
 
创建一个过滤链,首先为类Zend_Filter实例化一个对象,然后通过该实例化的addFilter()方法向过滤器中添加过滤器。该方法的语法格式如下。
 
addFilter(Zend_Filter_Interface $filter);
 
其中,参数$filter为一个定义的过滤器类的实例。执行方法,指定的过滤器将被添加到过滤器链中。
 
举个例子,该例子将使用Zend_Filter_Alpha过滤器与Zend_Filter_StringToUpper过滤器分别实现对字母与数值的过滤。
 
      $filterChain=new Zend_Filter();
     $filterChain->addFilter(new Zend_Filter_Alpha())         //使用创建的对象调用addFilter方法
     ->addFilter(new Zend_Filter_StringToUpper());
    
    $temp1="1234sadfDSFDSA345dfg";
     $temp2="@#%$@%234rfesffSDFSw23ffffff";
     echo "内容:".$temp1."<p>经过滤后:";
     echo $filterChain->filter($temp1);
     echo "<p>";
     echo "内容:".$temp2."<p>经过滤后:";
     echo $filterChain->filter($temp2);
 
上述代码创建的是一个过滤链,然后往里边添加Alpha过滤器和StringToUpper过滤器。通过过滤链,非字母内容(包括空格)都被过滤,且剩余的字母也都被转化为了大写,说明使用过滤链成功执行了多重过滤操作。。。

在Zendframework的Filter类中,系统预定义了几类常用的过滤器,这些预定义过滤器可以直接使用,具体如下表:

 

名称

过滤内容

名称

过滤内容

Almum

所有非字母或数字的内容

Int

非正数的内容

Alpha

所有非字母的内容

RealPath

所有非规范化的绝对路径名

BaseName

给定路径所有非文件名部分

StringToLower

字母全部转换为小写

Digits

所有非数值的内容

StringToUpper

字母全部转换为大写

Dir

给定路径所有非目录部分

StringTrim

字符串首尾的空格

HtmlEntities

替换HTML标记符“<”与“>

StripTags

去除字符串的HTML内容

Input

这个特殊,放下一节单独说吧!

其中,Alpha、StringToLower、StringToLower过滤器在前两节已经提到了,在这我就不说了,重点呢说说剩下的。

Alnum字母或数值过滤器

使用Zend_Filter_Alnum过滤器可以对给定内容中的非数字也非字母的内容进行过滤,比如说一个字符串“`123!$#^&*$abc  ”经过滤后为 "123abc" 了。

该过滤对于要求仅有字母与数值内容的场合(如用户名)时非常实用。

HtmlEntities HTML过滤器

Zend_Filter_HtmlEntities过滤器可以对给定内容中的HTML代码进行过滤。该过滤器就是对php函数中的htmlentities()进行了封装,所以通过此过滤器的HTML内容将被过滤掉。

比如字符串内容为"<img src='1.jpg'>" ,经过Zend_Filter_HtmlEntities过滤后, HTML不会起作用,也就是不会显示此图片,会将"<img src='1.jpg'>" 原样输出。

Int整形数过滤器

Zend_Filter过滤器中的Int过滤器可以对指定的数值进行整形转换,即将非整数部分过滤掉。对于要求输入内容仅为整数的场合非常有用。

比如内容为 “23” “5.423” “-4.8” 经过过滤后依次为 "23"  "5"  "-4"

其实使用php中的intval()也可以达到这样的效果。

StripTags HTML字符过滤器

Zend_Filter_StripTags过滤器的作用是将字符串中的HTML内容进行删除。该过滤器与Zend_Filter_HtmlEntities过滤器不同,Zend_Filter_HtmlEntities是将“<”、“>”等符号进行转换。而Zend_Filter_StripTags过滤器则是直接过滤掉“<”、“>”的等符号所包含的内容!

比如说字符串:<img src='1.jpg'>         经过滤后 ""       什么都没了,因为他除了符号包含的内容没有其他内容。

                         <h1>我爱xiaobai<h1>   经过滤后的‘我爱xiaobai’ 会没有标签<h1>的效果。

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值