包 core

包 mvc

包 orm

包 form

包 database

包 helper

包 cache

包 webcontrols

包 behavior

包 exception

包 debug

类 - QFilter

helper
类层次 class QFilter
版本 $Id: filter.php 2017 2009-01-08 19:09:51Z dualface $

类 QFilter 实现了过滤器接口,以及一些常用的过滤器方法

QFilter 的所有方法都是静态方法,可以采用三种方式使用 QFilter:

  • 直接调用特定的过滤方法对值进行过滤
    $value = QFilter::filter_alpha($value);
  • 通过 QFilter::filter() 调用过滤器
    $value = QFilter::filter($value, 'alpha');
  • 通过 QFilter::filterBatch() 批量调用过滤器
    $value = QFilter::filterBatch($value, $filters);

上述三种方式适合不同的情况,可以酌情使用。

公共方法

隐藏继承的方法

方法描述定义于
filter() 调用单个过滤器过滤值,并返回过滤结果 QFilter
filterBatch() 用一组过滤器过滤值,返回过滤结果 QFilter
filterByArgs() 以数组参数的形式调用一个过滤器 QFilter
filter_alnum() 过滤掉非字母和数字 QFilter
filter_alpha() 过滤掉非字母 QFilter
filter_digits() 过滤掉非数字 QFilter

保护的方法

隐藏继承的方法

方法描述定义于
_unicodeEnabled() 确认 PCRE 是否支持 utf8 和 unicode QFilter

方法详细说明

filter() 方法

public static mixed filter($value, $filter)

$value mixed 要过滤的值
$filter mixed 过滤器
{return} mixed 过滤后的值

调用单个过滤器过滤值,并返回过滤结果

$value = QFilter::filter($value, 'alpha');

过滤器可以是下列类型的函数或方法:

  • QFilter 内置的过滤器,例如 alpha;
  • PHP 内置的函数,例如 intval 等;
  • 开发者自己编写的全局函数;
  • 开发者自己编写的类静态方法,例如 MyClass::myFilter();
  • callback 类型的回调函数,例如 array($obj, $method)。

如果出现同名的过滤器方法,按照上述顺序来检查。

QFilter 内置的过滤器,实际上是 QFilter 类中以“filter_”开头的静态方法。 例如:filter_alpha、filter_digits。

大多数过滤器只需要一个参数 ,及要过滤的值。但部分过滤器要求更多的参数。 此时在调用 QFilter::filter() 时,可以将额外的参数一起提供:

// 等同于 $value = substr($value, 0, -3)
$value = QFilter::filter($value, 'substr', 0, -3);

不过对于要求多个参数的过滤器,其第一个参数必须是被过滤的值。


filterBatch() 方法

public static mixed filterBatch($value, $filters)

$value mixed 要过滤的值
$filters array 包含多个过滤器和过滤器参数的数组
{return} mixed 过滤后的值

用一组过滤器过滤值,返回过滤结果

QFilter::filterBatch() 可以很方便对一个值使用一组过滤器,并返回最终结果。

$filters = array(
    array('alpha'),
    array('MyClass::myFilter'),
    array('substr', 0, -4),
);
$value = QFilter::filterBatch($value, $filters);

传递给 filterBatch() 方法的第二个参数包含了多个过滤器及其附加参数(如果有的话)。


filterByArgs() 方法

public static mixed filterByArgs($value, $args)

$value array 要过滤的值
$args array 要调用的过滤器及参数
{return} mixed 过滤后的值

以数组参数的形式调用一个过滤器


filter_alnum() 方法

public static string filter_alnum($value)

$value string 要过滤的值
{return} string 过滤后的值

过滤掉非字母和数字

$value = 'abcd."1234"';
$value = QFilter::filter_alnum($value);
// 过滤后的值为 abcd1234

除了直接调用该方法,还可以通过 QFilter::filter() 等方法来调用这个过滤器。


filter_alpha() 方法

public static string filter_alpha($value)

$value string 要过滤的值
{return} string 过滤后的值

过滤掉非字母

使用方法同 filter_alnum()。


filter_digits() 方法

public static string filter_digits($value)

$value string 要过滤的值
{return} string 过滤后的值

过滤掉非数字

使用方法同 filter_alnum()。


_unicodeEnabled() 方法

protected static boolean _unicodeEnabled()

确认 PCRE 是否支持 utf8 和 unicode