TP5自定义规则——验证数组及其元素

需求:验证数组及其数组里的所有元素
本例验证说明:
需求:传递参数内容不为空,参数类型为数组,数组最大4个元素
自定义规则:数组的元素最长1个长度,元素范围为大写A-D
代码参考
控制器层:

$validate = validate('Curriculum');
if (!$validate->scene('get_classify_course')->check($data)) {
	$this->error($validate->getError());
}

验证器层:

 'require|array|max:4|checkClassify:输入规则错误!',
	];

	//暂时不需要
	protected $message = [
		//可以将错误信息写入这里看起来比较简洁
		//例如
		'course_classify'=>'输入规则错误!',
	];

	protected $scene = [
		'get_classify_course' => ['course_classify'],
	];

	protected function checkClassify($value, $rule, $data) {
		// 方法一,手动
		// $classify_rules = array('A', 'B', 'C', 'D');
		// foreach ($value as $k => $v) {
		// 	if (!in_array($v, $classify_rules)) {
		// 		return $rule;
		// 	}
		// }
		// return true;

		//方法二,正则表达式
		foreach ($value as $k => $v) {
			if (!preg_match('/^[A-D]{1}+$/', $v)) {
				return $rule;
			}
		}
		return true;
	}
}

分享:
正则表达式大全:https://www.cnblogs.com/fozero/p/7868687.html
TP5内置验证规则:https://www.cnblogs.com/pcx105/p/7735224.html
TP5手册——自定义验证规则:https://www.kancloud.cn/manual/thinkphp5/129320

你可能感兴趣的:(PHP,TP5,正则表达式)