自写的PHP文本验证类Text_validation
2015-08-31
公司的项目使用Codeigniter3.0开发,CI内置了一个表单验证类,功能强大使用方便,但只能在表单提交到后端时使用,对于一个经常使用ajax的项目很是不便,重复性地写一大堆判断也是累人。于是我自己模仿着这个类的功能,写出了这个文本验证类。虽然是为CI写的,但只要删除第二行
defined ( 'BASEPATH' ) OR exit( 'No direct script access allowed' );
即可在任何PHP项目中使用。由于代码中用到了 [] 来声明数组,因此要求PHP最低5.4。如果你愿意动动手的话,可以兼容到5.x
废话不多说来看个例程,为了方便理解我这里展示通用写法
require 'Text_validation.php';
$tvalid = new Text_validation();
$tvalid->rule($id, '编号', 'required|integer');
$tvalid->rule($score, '分数', 'required|greater_than[0]|less_than[2147483647]');
$bool = $tvalid->run();
$tvalid->destroy();
echo $bool;
首先实例化文本验证,然后定义验证规则。分别给$id定义了“必须存在”和“必须是整数”的规则、给$score定义了“必须存在”、“大于0”和“小于2147483647”的规则。接下来run一下,返回true或错误信息。例如$id为文本型,则会返回“编号 不能包含除整数以外的其他字符”这样的错误信息。destroy方法可以清空所有已设定的规则,便于下次使用而不必再次new一个验证类。小朋友们,你们 明白了吗?(葛平腔)
规则列表
- required 必须存在
- is_required 是否存在(not null),存在则继续判断后面的规则
- matches 相等 例如:matches[apple]
- regex_match 正则表达式匹配
- is_unique 是否不重复。在有多条rule的情况下,判断当前值是否不跟任何一条rule内的值重复
- min_length 最小长度
- max_length 最大长度
- exact_length 固定长度
- greater_than 大于
- less_than 小于
- in_list 是否在列表中。例如:in_list[apple,beta,chart] 注意不要有多余的空格
- alpha 是否为纯字母
- alpha_numeric 是否为字母、数字
- alpha_dash 是否为字母、数字、_、-
- numeric 是否为纯数字
- integer 是否为整数
- decimal 是否为十进制数字
- is_natural 是否为自然数(包括0)
- is_natural_no_zero 是否为自然数(不包括0)
- valid_email 是否为email邮箱地址
- valid_url 是否为url链接地址
- valid_ip 是否为ip地址。默认判断是否为合法的ipv4地址,你也可以使用 valid_ip[ipv6]
- valid_base64 是否为base64数据
如果还有建议或不明,欢迎留言
厅