§ 验证格式定义
$this->_validators = array(
'字段1'=>array('条件1' , '条件2', '...', '条件N'),
'字段2'=>array('条件1' , '条件2', '...', '条件N'),
'字段N'=>array('条件1' , '条件2', '...', '条件N'),
);
数据自动验证以多维数组方式进行配置,一个字段可以有N个验证条件,任何一个条件验证失败,均会返回错误。
条件是以数组方式进行配置的,条件的参数也是以数组进行传递的。
§ 条件定义
array(string $rule, array([ string $argv, ] string $errorinfo))
$rule 规则名称,如果内置的条件不能满足,可以直接编写正规表达式
$argv 参数值,允许多个参数,当规则没有参数时忽略该项
$errorinfo 当验证不满足时,返回的错误信息
系统中内置了多种条件规则可供使用,具体的定义如下:
规则 |
参数 |
说明 |
not_empty |
|
验证值是否为空 |
min_length |
$length |
验证值是否满足最小长度 |
max_length |
$length |
验证值是否满足最大长度 |
min |
$mix |
验证值是否不小于指定的数值 |
max |
$max |
验证值是否不大于指定的数值 |
integer |
|
验证值是否为纯数字 |
|
|
验证值是否符合电子邮箱格式 |
url |
|
验证值是否符合网址格式 |
domain |
|
验证值是否符合网站域名格式规范 |
ip |
|
验证值是否符合IP地址规范 |
telephone |
|
验证值是否符合电话号码格式 |
mobile |
|
验证值是否符合手机号码格式 |
zip |
|
验证值是否符合邮政编码格式 |
|
|
验证值是否符合QQ号码格式 |
date |
|
验证值是否为日期格式 |
datetime |
|
验证值是否为日期时间格式 |
chinese |
|
验证值是否为纯中文字符 |
english |
|
验证值是否为纯英文字符 |
type |
$type |
验证值是否为指定的$type类型,数据类型请参考PHP手册 gettype返回值 |
alnum |
|
验证值是否由 数字和字母组成 |
alpha |
|
验证值是否由 纯字母组成 |
alnumu |
|
验证值是否由 数字和字母、下划线 之外的字符组成 |
digit |
|
验证值是否由 纯数字组成 |
upper |
|
验证值是否由 大全字母组成 |
lower |
|
验证值是否由 小全字母组成 |
cntrl |
|
验证值是否由 控制字符组成,如:\n\r\n\t |
graph |
|
验证值是否由 可见字符组成,回车换行之类不是可见字符 |
punct |
|
验证值是否由 标点符号组成 |
whitespace |
|
验证值是否为 空白,其中换行,制表符等不可见字符也算是空白 |
xdigit |
|
验证值是否为 十六进行的数字组成 |
ascii |
|
验证值是否为 ASCII码 |
注:规则至少要有一个参数 $errorinfo,以上表格中做了简化,省略了共同的参数:$errorinfo。
§ 举例说明
要求字段 userid的值不能为空,必须为数字,并且长度不大于8位数,代码如下:
$this->_validators = array(
'userid'=>array(
'not_empty'=>array('用户编号不能为空'),
'integer'=>array('用户编号只能为数字'),
'max_length'=>array(8, '用户编号长度不能超过8位'),
),
);
如果内置的规则无法满足您的要求,你可以直接编写正则表达式进行验证。
如,使用正则验证字段 mobile是否符合手机号码的规范:
$this->_validators = array('mobile'=>array(
'/^(01|1)(3|5|8)[0-9]{9}$/'=>array('手机号码格式错误'),
),
);