Zend Filter定义了一个接口 Zend_Filter_Interface,里面定义了一个方法filter(),其他类继承这个接口时,可以根据具体需要实现这个方法。
过滤器的基本用法:
1、
$htmlEntities = new Zend_Filter_HtmlEntities(); echo $htmlEntities->filter('&'); // & echo $htmlEntities->filter('"'); // "2、使用静态get方法, 这个方法的第一个参数是数据输入值,将传递给
filter()
方法,第二个参数是个字符串,对应于过滤器类的基本名,和 Zend_Filter 名称空间有关。
get()
方法自动加载这个类,创建一个实例,并应用
filter()
方法给数据输入。
echo Zend_Filter::get('&', 'HtmlEntities');
如果过滤器类需要,也可以传递一个数组构造参数
echo Zend_Filter::get('"', 'HtmlEntities', array(ENT_QUOTES));
16.2. 标准过滤器类
Zend Framework 带有一组标准的过滤器。
扩展所有符号的链接和解析指向在输入路径里的 '/./', '/../' 和额外的 '/' 字符并且返回规范化后的绝对路径名,返回的结果路径将没有符号链接 '/./' 或 '/../' 部分。
如果失败,例如文件不存在,Zend_Filter_RealPath
将返回 FALSE
。在 BSD 系统,如果只有路径最后部分不存在, Zend_Filter_RealPath
不会失败,但其它系统返回 FALSE
。
返回把 HTML 和 PHP 标签已剥离的(声明为允许的标签不会剥离)输入的字符串。除了能指定允许哪个标签,开发者也可以在所有允许的标签(或只对特定的标签)中指定哪个属性被允许。最后,这个过滤器提供控制是否注释(如<!-- ... -->
)被删除或允许。
4、过滤器链
$filterChain = new Zend_Filter(); $filterChain->addFilter(new Zend_Filter_Alpha()) ->addFilter(new Zend_Filter_StringToLower()); // Filter the username $username = $filterChain->filter($_POST['username']);5、编写过滤器,开发者可以根据自己的需要编写过滤器, 只要实现
Zend_Filter_Interface
接口。
使用Zend_Filter::addFilter()
方法,可以把一个实现了这个接口的对象添加到过滤器链中。
下面的例子,示范了怎样编写一个定制的过滤器:
class MyFilter implements Zend_Filter_Interface { public function filter($value) { // perform some transformation upon $value to arrive on $valueFiltered return $valueFiltered; } }
添加上述过滤器的实例到过滤器链中:
$filterChain = new Zend_Filter(); $filterChain->addFilter(new MyFilter());
Zend_Filter_Input 提供了一个声明接口来联合多重过滤器和校验器,使用 它们来收集数据并在用过滤器和校验器处理之后来获取输入值。为 HTML 输出 安区起见,缺省的返回值是转义格式。
$filters = array( 'month' => 'Digits', 'account' => 'StringTrim' ); $validators = array( 'account' => 'Alpha' );$input = new Zend_Filter_Input($filters, $validators);
if ($input->isValid('month')) { echo "Field 'month' is OK\n"; }
博客已转到phpfan.cn