在有些表单中,字段很多很多,字段类型、长度、格式等都有可能不一样,一个一个的去判断有时候会很麻烦,还不方便升级,来看看我自己整理的方法吧,在原生php中用的,简单的系统中用得到,如果用框架来弄的话不少框架都有自己的解决方案,来看看我的
//需要的参数 $canshu=array( //参数名 错误值,错误提示信息 'id' =>array('','参数错误'), 'xingming' =>array('','请输入姓名'), 'dianhua' =>array('','请提供电话'), 'status' =>array('','请选择正确的状态'), 'remark' =>array('','') ); //得到post参数,多余的参数会被过滤掉 foreach($_POST as $kp=>$vp){ if(array_key_exists($kp,$canshu)){ $canshu[$kp][0]=htmlspecialchars($vp,ENT_QUOTES); } } //比较必要参数及记录对应值 $sql_keyvalue=""; $tmp_status=array(0,1,2,3);//可选值校验 foreach($canshu as $k2=>$v2){ if($k2=='id'){ //对id进行判断,如:是否正整数,记录是否存在等等 } else if($k2=='status'){ if(!in_array($v2[0],$tmp_status)){ //ShowMsg($v2[1]);//提示错误信息, } }else{ //无需核验的参数 } $sql_keyvalue.=$sql_keyvalue==""?$k2."='$v2[0]'":','.$k2."='$v2[0]'"; } //修改记录的sql语句 $sql='update table set '.$sql_keyvalue.' where id='.$canshu['id'][0]; //添加记录的sql语句也可以拼接出来
此处只是进行了是否为空的判断,最好的方法是在数组中加入一个正则表达式,
例如id字段
'id' =>array('0','^[0-9]{1,30}$','参数错误')
通过表达式来验证,比如id、电话、邮箱、用户名等都可以用正则表达是来验证,每个参数写上自己的正则就行,
附上常用的正则表达式
array( array('value'=>'','text'=>'请选择验证方式'), array('value'=>'^[\u4e00-\u9fa5\a-zA-Z0-9]+$','text'=>'英文数字汉字'), array('value'=>'^[A-Za-z]+$','text'=>'英文大小写字符'), array('value'=>'^[1-9]\d*|0$','text'=>'0或正整数'), array('value'=>'^[0-9]{1,30}$','text'=>'正整数'), array('value'=>'^[-\+]?\d+(\.\d+)?$','text'=>'小数'), array('value'=>'\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*','text'=>'邮箱'), array('value'=>'^13[0-9]{9}$|^15[0-9]{9}$|^18[0-9]{9}$','text'=>'手机'), )