1 /**
2 * 验证字段值是否为有效格式
3 * @access protected
4 * @param mixed $value 字段值
5 * @param string $rule 验证规则
6 * @param array $data 验证数据
7 * @return bool
8 */
9 protected function is($value, $rule, $data = [])
10 {
11 switch ($rule) {
12 case 'require':
13 // 必须
14 $result = !empty($value) || '0' == $value;
15 break;
16 case 'accepted':
17 // 接受
18 $result = in_array($value, ['1', 'on', 'yes']);
19 break;
20 case 'date':
21 // 是否是一个有效日期
22 $result = false !== strtotime($value);
23 break;
24 case 'alpha':
25 // 只允许字母
26 $result = $this->regex($value, '/^[A-Za-z]+$/');
27 break;
28 case 'alphaNum':
29 // 只允许字母和数字
30 $result = $this->regex($value, '/^[A-Za-z0-9]+$/');
31 break;
32 case 'alphaDash':
33 // 只允许字母、数字和下划线 破折号
34 $result = $this->regex($value, '/^[A-Za-z0-9-\_]+$/');
35 break;
36 case 'chs':
37 // 只允许汉字
38 $result = $this->regex($value, '/^[x{4e00}-x{9fa5}]+$/u');
39 break;
40 case 'chsAlpha':
41 // 只允许汉字、字母
42 $result = $this->regex($value, '/^[x{4e00}-x{9fa5}a-zA-Z]+$/u');
43 break;
44 case 'chsAlphaNum':
45 // 只允许汉字、字母和数字
46 $result = $this->regex($value, '/^[x{4e00}-x{9fa5}a-zA-Z0-9]+$/u');
47 break;
48 case 'chsDash':
49 // 只允许汉字、字母、数字和下划线_及破折号-
50 $result = $this->regex($value, '/^[x{4e00}-x{9fa5}a-zA-Z0-9\_-]+$/u');
51 break;
52 case 'activeUrl':
53 // 是否为有效的网址
54 $result = checkdnsrr($value);
55 break;
56 case 'ip':
57 // 是否为IP地址
58 $result = $this->filter($value, [FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_IPV6]);
59 break;
60 case 'url':
61 // 是否为一个URL地址
62 $result = $this->filter($value, FILTER_VALIDATE_URL);
63 break;
64 case 'float':
65 // 是否为float
66 $result = $this->filter($value, FILTER_VALIDATE_FLOAT);
67 break;
68 case 'number':
69 $result = is_numeric($value);
70 break;
71 case 'integer':
72 // 是否为整型
73 $result = $this->filter($value, FILTER_VALIDATE_INT);
74 break;
75 case 'email':
76 // 是否为邮箱地址
77 $result = $this->filter($value, FILTER_VALIDATE_EMAIL);
78 break;
79 case 'boolean':
80 // 是否为布尔值
81 $result = in_array($value, [true, false, 0, 1, '0', '1'], true);
82 break;
83 case 'array':
84 // 是否为数组
85 $result = is_array($value);
86 break;
87 case 'file':
88 $result = $value instanceof File;
89 break;
90 case 'image':
91 $result = $value instanceof File && in_array($this->getImageType($value->getRealPath()), [1, 2, 3, 6]);
92 break;
93 case 'token':
94 $result = $this->token($value, '__token__', $data);
95 break;
96 default:
97 if (isset(self::$type[$rule])) {
98 // 注册的验证规则
99 $result = call_user_func_array(self::$type[$rule], [$value]);
100 } else {
101 // 正则验证
102 $result = $this->regex($value, $rule);
103 }
104 }
105 return $result;
106 }
//XiaoHeQQ496631085 网站开发制作二次开发,小程序微信等