第 11 章 Zend_Filter
上一页 |  | 下一页

## 第 11 章 Zend_Filter

## 11.1. 简介

Zend_Filter组件提供了一系列普遍使用的数据过滤器(data filter)。同时也提供了一个简单的过滤器链机制，使多个过滤器以用户定义的顺序对一个单一的数据进行过滤。

什么是过滤器(filter)？

在现实世界中，过滤器被用来过滤掉输入物中不需要的部分，并期望产出部分输出物（比如，咖啡）。在这样的情景下，过滤器就像是一个操作员，生产出输入物的子集。这种类型的过滤对Web应用程序来说是很有用的－移除非法的输入数据，去除不必要的空格，等等。

这个过滤器基本的定义，可延伸出包括一般化的输入数据的转化。编码HTML实体，是Web应用程序中一个普遍的转化。例如，一个表单字段的值附带着不受信任的数据（比如，来自web浏览器的数据），为了防止不期望的行为发生和安全漏洞，这个值应该不包括HTML实体，或只包含已编码的HTML实体。为了满足这个需求，输入数据中的HTML实体被移除或被编码，当然，这得视具体情况而定。过滤器的第一种定义中就涵盖了过滤器移除HTML实体的意思－操作员生产出输入数据的一个子集。然而，过滤器也可编码HTML实体，转化输入数据（比如，"`&`"被编码成"`&amp;`"）。为Web开发者支持这样的用例是非常重要的，且在使用Zend_Filter的上下文中，”to filter”的意思是对输入数据执行一些转化。

确立了这样的过滤器定义，为`Zend_Filter_Interface`接口奠定了理论基础，需要过滤器类实现一个名为`filter()`的方法。

下面一个简单的例子，示范了在2个输入数据上使用过滤器，"`&`"符号和双引号(`"`)字符：

    <?php
    require_once 'Zend/Filter/HtmlEntities.php';
    $htmlEntities = new Zend_Filter_HtmlEntities();
    echo $htmlEntities->filter('&'); // &amp;
    echo $htmlEntities->filter('"'); // &quot;

上一页 |  | 下一页
10.8. Custom Feed and Entry Classes | 起始页 | 11.2. 过滤器链