自写的PHP文本验证类Text_validation

PHP
2834
2
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数据
下载地址:http://pan.baidu.com/s/1hquBgg8

如果还有建议或不明,欢迎留言

昵称
邮箱
网址
丝袜诱惑你的头像 2015-10-06 13:37

gm_org.gif

要的头像 2016-05-17 11:53