PHP强大的内置filter (一)

 1 <?php
 2 #PHP内置的validate filter
 3 $input_data = True;
 4 $result = filter_var($input_data,FILTER_VALIDATE_BOOLEAN);
 5 #FILTER_VALIDATE_BOOLEAN对应验证布尔值
 6 var_dump($result); #因为input_data是真,所以结果是 True
 7 $input_data = 123;
 8 $result = filter_var($input_data,FILTER_VALIDATE_BOOLEAN);
 9 var_dump($result); #因为input_data是123数字类型,所以结果是 False
10 /*
11 filter_var 函数有三个参数 分别是 输入数据 filter对应的id 和选项
12 输入数据类型可以是多种的
13 filter的对应id在这里可以查看列表 http://www.php.net/manual/zh/filter.filters.php
14 选项是一个关联数组 可以在上面的地址中查看可以使用的选项,也可以自己使用回调函数来处理输入数据
15 */
16 #使用回调例子
17 function callback_filter($value) #回调函数
18 {
19 return $value.'_callback';
20 }
21 $result = filter_var('input',FILTER_CALLBACK,array('options'=>'callback_filter'));
22 var_dump($result);
23 #验证一个非10进制的整数
24 #8进制
25 $result = filter_var('0755', FILTER_VALIDATE_INT, array('flags'=>FILTER_FLAG_ALLOW_OCTAL));
26 var_dump($result);
27 #16进制
28 $result = filter_var('0XAF', FILTER_VALIDATE_INT, array('flags'=>FILTER_FLAG_ALLOW_HEX));
29 var_dump($result);
30 #注意这里输出的结果是10进制的
31 #当验证失败时设置默认值  因为字符a不是整数,所以在无法通过验证的时候被强制替换成了默认值123 
32 $result = filter_var('a',FILTER_VALIDATE_INT,array('options'=>array('default'=>123)));
33 var_dump($result);
34 #限制数字范围
35 $result = filter_var(99,FILTER_VALIDATE_INT,array('options'=>array('default'=>50,'max_range'=>98)));
36 var_dump($result);
37 $result = filter_var(99,FILTER_VALIDATE_INT,array('options'=>array('default'=>50,'min_range'=>100)));
38 var_dump($result);
39 #min与max可以同时使用
40 #验证email格式
41 $result = filter_var('a@a.c',FILTER_VALIDATE_EMAIL);
42 var_dump($result);
43 #验证IP
44 $result = filter_var('192.168.1.1',FILTER_VALIDATE_IP);
45 var_dump($result);
46 #FILTER_VALIDATE_IP的flags有四个分别是
47 #FILTER_FLAG_IPV4, FILTER_FLAG_IPV6, FILTER_FLAG_NO_PRIV_RANGE, FILTER_FLAG_NO_RES_RANGE
48 #对应 IPV4 IPV6 过滤私有地址 与 过滤保留地址
49 #验证url
50 $result = filter_var('http://www.yahoo.com/',FILTER_VALIDATE_URL);
51 var_dump($result);
52 #url 有两种flags 其中FILTER_FLAG_QUERY_REQUIRED 要求url中必须包含查询字符串
53 #FILTER_FLAG_PATH_REQUIRED 要求格式必须包含为/结尾的路径或者包含文件
54 #简单来说就是 http://aaa.com是不能通过的 但是http://aaa.com/或者http://aaa.com/index.html就可以通过)
55 #注意 url并不仅限于http与https ,而且目前也只支持ASCII字符,例如中文域名就会失败
56 #根据正则验证
57 $result = filter_var('0000112884634874',FILTER_VALIDATE_REGEXP,array('options'=>array('regexp'=>"/\d+/")));
58 var_dump($result);
59 #在php 5.4.11之前 +0与-0只能通过float验证,在5.4.11之后可以通过int和float验证
60 #以上就是PHP内置的几种validate filter,下回介绍其他filter

 

posted @ 2014-03-27 22:57 透明白 阅读(...) 评论(...) 编辑 收藏