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