- <?php
- /*
- 我的数据验证的类
- */
- class checker{
- // 函数定义
- var $array_data=""; //要验证的数组数据
- var $var_key=""; //当前要验证的数据的key
- var $var_value=""; //当前要验证的数据的值
- var $is_empty=""; //要验证的值可以为空
- var $array_info=""; //提示信息收集
- var $array_errors=array(); //错误信息收集
-
- //--------------------->构造函数<------------
- function checker($date){
- $this->array_data=$date;
- }
- //--------------------->数据检验函数<-------------
- function check($array_datas){
- foreach($array_datas as $value_key => $value_v){
- $temp1=explode('|',$value_v);
- if($temp1[0]=="i_empty" and empty($this->array_data[$value_key])){
- ;
- }else{
- foreach($temp1 as $temp_key => $value_con){
- //$data_temp=$this->array_data;
- //var_dump($data_temp['birthday']);
- //echo "--".$value_key."--<br>";
- $this->var_key=$value_key;
- $this->var_value=$this->array_data[$value_key];
- $temp2=explode(':',$value_con);
- switch(count($temp2)){
- case 0:
- $this->array_errors[$this->var_key]="此值的验证请求不存在";
- break;
- case 1:
- //如果用户没有指定验证动作
- if(empty($temp2[0])){
- $this->array_errors[$this->var_key]="此值的验证请求不存在";
- break;
- }else{
- $this->$temp2[0](); //如果返回值为非,就不用进行下一步验证
- break;
- }
- case 2:
- $this->$temp2[0]($temp2[1]);
- break;
- case 3:
- $this->$temp2[0]($temp2[1],$temp2[2]);
- break;
- }
- }
- }
- }
- }
- function i_empty(){
- $this->is_empty=1; //这个值没什么用,只是说明要验证的值可以是空值
- }
-
- //日期数据、邮件地址、浮点数据、整数、IP地址、字符串、最大值、最小值、字符串长度、域名、URL
- //-------------------->日期验证--------------------
- function i_date(){
- //约定格式:2000-02-01或者:2000-5-4
- if (!eregi("^[1-9][0-9][0-9][0-9]-[0-9]+-[0-9]+$", $this->var_value)) {
- $this->array_errors[$this->var_key]="日期格式错误";
- return false;
- }
- $time = strtotime($this->var_value);
- if ($time === -1) {
- $this->array_errors[$this->var_key]="日期格式错误";
- return false;
- }
- $time_e = explode('-', $this->var_value);
- $time_ex = explode('-', Date('Y-m-d', $time));
- for ($i = 0; $i < count($time_e); $i++) {
- if ((int)$time_e[$i] != (int)$time_ex[$i]) {
- $this->array_errors[$this->var_key]="日期格式错误";
- return false;
- }
- }
- return true;
- }
- //-------------------->时间验证--------------------
- function i_time() {
- if (!eregi('^[0-2][0-3](:[0-5][0-9]){2}$', $this->var_value)) {
- $this->array_errors[$this->var_key]="时间格式错误";
- return false;
- }
- return true;
- }
- //-------------------->email验证--------------------
- function i_email(){
- if(!eregi("^[0-9a-z~'!#$%&_-]([.]?[0-9a-z~!#$%&_-])*" .
- "@[0-9a-z~!#$%&_-]([.]?[0-9a-z~!#$%&_-])*$", $this->var_value))
- $this->array_errors[$this->var_key]="邮件格式错误<br>";
- //echo $this->var_value;
- return true;
- }
- //-------------------->浮点数验证--------------------
- function i_float(){
- //if(!is_float($this->var_value))
- if(!ereg("^[1-9][0-9]?/.([0-9])+$",$this->var_value))
- $this->array_errors[$this->var_key]="这不是一个小数";
- }
- //-------------------->字符串验证--------------------
- function i_string(){
- if(empty($this->var_value)) //允许为空
- return true;
- if(!is_string($this->var_value))
- $this->array_errors[$this->var_key]="这不是一个字符串";
- return true;
- }
- //-------------------->字符串长度验证--------------------
- function len($minv,$maxv=-1){
- $len = strlen($this->var_value);
- if($len==0){
- $this->array_errors[$this->var_key]="不能为空值";
- return false;
- }
- if ($len < $minv) {
- $this->array_errors[$this->var_key]="输入的串太短了";
- return false;
- }
- if ($maxv != -1) {
- if ($len > $maxv) {
- $this->array_errors[$this->var_key]="输入的串太长了";
- return false;
- }
- }
- return true;
- }
- //-------------------->整数验证--------------------
- function i_int(){
- if(!ereg("^[0-9]*$",$this->var_value))
- $this->array_errors[$this->var_key]="这不是一个整数";
- }
- //-------------------->IP地址验证--------------------
- function i_ip(){
- if(!ereg("^[0-9]{1,3}/.[0-9]{1,3}/.[0-9]{1,3}/.[0-9]{1,3}$", $this->var_value)){
- $this->array_errors[$this->var_key]="错误的IP地址";
- }else{
- //每个不大于255
- $array_temp=preg_split("//./",$this->var_value);
- foreach($array_temp as $ip_value){
- if((int)$ip_value >255)
- $this->array_errors[$this->var_key]="错误的IP地址";
- }
- }
- return true;
- }
- //-------------------->最大值验证--------------------
- function i_max($maxv){
- if($this->var_value >= $maxv){
- $this->array_errors[$this->var_key]="数据值太大";
- return false;
- }
- return true;
- }
- //-------------------->最小值验证--------------------
- function i_min($minv){
- if($this->var_value <= $minv){
- $this->array_errors[$this->var_key]="数据值太小";
- return false;
- }
- return true;
- }
- //-------------------->域名验证--------------------
- function i_domain() {
- if(!eregi("^@([0-9a-z/-_]+/.)+[0-9a-z/-_]+$", $this->var_value))
- $this->array_errors[$this->var_key]="错误的域名";
- return eregi("^@([0-9a-z/-_]+/.)+[0-9a-z/-_]+$", $this->var_value);
- }
- //-------------------->URL验证--------------------
- function i_url(){
- if(!eregi('^(http://|https://){1}[a-z0-9]+(/.[a-z0-9]+)+$' , $this->var_value))
- $this->array_errors[$this->var_key]="错误的WEB地址";
- return true;
- }
- //-------------------->自定义正则校验--------------------
- function check_own($user_pattern){
- //自定义校验。出错返回false,匹配返回1,不匹配返回0
- $tempvar=preg_match($user_pattern,$this->var_value);
- if($tempvar!=1)
- $this->array_errors[$this->var_key]="数据不合法";
- }
- ######################### 类 the end ################################
- }
- //<----------------------------作用示例--------------------->
- /*
- //注意:如果允许一个值为空,则在验证数组前加上i_empty就行了。
- //:前面第一个是验证函数,后面的都是参数
- $rule_list = array(
- 'temp' =>'check_own:"^@([0-9a-z/-_]+/.)+[0-9a-z/-_]+$"',
- 'time' => 'i_time',
- 'fload' => 'i_float|i_min:1|i_max:10.10|len:0:20',
- 'ipadr' => 'i_ip',
- 'url' =>'i_url',
- 'birthday' => 'i_date',
- 'email' => 'i_email|len:1:128',
- 'gender' => 'i_int|i_min:1|i_max:20',
- 'city' => 'i_string|len:1:32');
- $rule_date = array(
- 'temp' => '@sina.com',
- 'time' => '23:59:00',
- 'fload' => '10.0',
- 'ipadr' => '251.255.1.1',
- 'url' => 'Https://www.gg',
- 'birthday' => '2004-5-4',
- 'gender' => '15',
- 'email' => 'tonerzhang@sohu.com',
- 'city' => 'Guangzhou');
- $gg=new checker($rule_date);
- $gg->check($rule_list);
- print_r($gg->array_errors);
- */
- ?>
PHP中比较值得推荐的数据验证的类
最新推荐文章于 2021-05-24 11:50:46 发布