PHP5过滤器功能第1部分
过滤器功能是PECL库的一部分,并且应该在大多数PHP5安装中作为标准配置提供。如果不存在,请询问您的服务器管理员以进行安装。
创建过滤器函数的目的是避免开发人员不得不编写大量不可维护的代码以检查变量的有效性并在验证后清除这些变量。因此,您不必使用许多不同的函数和正则表达式来判断一个值是数字,布尔值还是URL,而是可以使用这些过滤器功能。
您可能感兴趣的主要功能是filter_var()和filter_input()。该filter_var()函数用于验证单个输入,参数为:
变量:要测试的变量。
过滤器:用于测试变量的过滤器。
选项(可选):选项的关联数组或标志的按位析取。
要使用该filter_var()函数,您只需向其传递一个变量和一个适当的过滤器。因此,要测试变量是否为数字,您只需传递名为FILTER_VALIDATE_INT的过滤器即可。
$int = 746; if ( filter_var($int, FILTER_VALIDATE_INT) ) { echo 'Value is an integer'; }else{ echo 'Value is not and integer'; }
测试以查看用户是否输入了正确格式的电子邮件地址是一项常见的任务,只需使用FILTER_VALIDATE_EMAIL过滤器即可。
$email = '[email protected]'; if ( filter_var($email,FILTER_VALIDATE_EMAIL) ) { echo 'Email passed'; }else{ echo 'Invalid Email'; };
使用URL可以完成相同的操作。
$url = 'http://www.hashbangcode.com'; if( filter_var($url, FILTER_VALIDATE_URL) ) { echo 'Valid URL'; }else{ echo 'Not a valid URL'; };
options参数可用于多种情况。验证变量是数字是可以的,但是验证数字的更有用的方法是使用范围。要为FILTER_VALIDATE_INT过滤器创建范围,您需要使用这样构建的关联数组。
$int_options = array('options' => array( 'min_range' => 0, 'max_range' => 256) );
然后可以将其输入到该filter_var()功能中。
$int=123; if(filter_var($int, FILTER_VALIDATE_INT, $int_options)){ echo 'Integer within range'; }else{ echo 'Integer outside range'; }
该filter_input()函数的使用方式几乎相同,但是在这种情况下,还有一个附加的第一个参数。这告诉PHP从何处获取变量,变量可以是INPUT_GET,INPUT_POST,INPUT_COOKIE,INPUT_SERVER,INPUT_ENV之一。
例如,要过滤$_POST请求,您需要做的就是放入INPUT_POST类型,然后命名要测试的$_POST全局数组参数。
if ( filter_input(INPUT_GET, 'test', FILTER_VALIDATE_INT) ) { echo 'Test is integer'; }else{ echo 'Test is NOT integer'; };
您可以使用filter_has_var()函数检查参数类型中是否存在变量。
if ( filter_has_var(INPUT_POST, 'url') ) { echo 'Input not found.'; }
但是,这不仅是过滤器功能的用途,它们还可以用于清理输入。例如,一种常见的做法是对HTML标记进行转换,以便在filer_var函数的字符串上使用FILTER_SANITIZE_SPECIAL_CHARS过滤器将其正确显示,将所有HTML特定字符转换为它们的ASCII编码值。
$test = 'Test Text!'; echo filter_var($test, FILTER_SANITIZE_SPECIAL_CHARS);
将打印...
<strong>TestText!</strong>
要查看可用的过滤器和消毒剂标志的完整列表,请查看PHP网站上的过滤器页面。