在有些表单中,字段很多很多,字段类型、长度、格式等都有可能不一样,一个一个的去判断有时候会很麻烦,还不方便升级,来看看我自己整理的方法吧,在原生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'=>'手机'),
)