简单粗暴 ⛽️
希望各位大神批评指出
使用方法
- 创建验证文件夹 [ validate ]
- 在 validate 文件夹内创建验证文件 ad.validate.php (格式: 请求文件名.validate.php)
// ad.validate.php /** * Author: 老掌 * Date: 2020/05/11 16:10 */ return $validate = [ 'code' => [ ‘url'=>1001, 'name'=>1002 ], 'rule' => [ 'url' => 'url', 'name'=>'must' ], 'message' => [ 'url' => '请上传广告文件', 'name' => '请输入广告名称', ], 'scene' => [ 'ad_add' => ['url','name'], ], ]
- 调用验证类
$this->scriptfilename = pathinfo($_SERVER['SCRIPT_FILENAME'])['filename']; Validate::validateData($this->_G,$this->scriptfilename,'ad_add');
验证类
/**
* @Description 数据格式验证类
* @author WangWeiChen
* @date 2019-09-26 18:57
*/
class Validate
{
/**
* 数据验证方法
* @param [array] $data [验证数据]
* @param [string] $validateFile [引入的验证规则文件名]
* @param [string] $scene [验证场景]
* @param [string] $is_tip [是否直接进行提示 1:直接提示 0:返回状态]
* @param [string] $is_ajax [是否为 ajax 请求 1:是 0:否]
* @return [
* 格式正确: return array('code'=>1,'msg'=>'')
* 格式错误:
* $is_tip=1 and $is_ajax=1 >> return exit(json_encode(array('code'=>状态码,'msg'=>提示语)));
* $is_tip=1 and $is_ajax=0 >> error($returnInfo['msg']);
* $is_tip=0 >> return $returnInfo;
* ]
*/
Static function validateData($data,$validateFile,$scene,$is_tip = 1,$is_ajax=1){
require "./validate/" . $validateFile . ".validate.php"; //引入模块的验证规则,返回变量 $validate
$returnInfo['code'] = 1;
$returnInfo['msg'] = '';
if(empty($validate)){
$returnInfo['code'] = 1001;
$returnInfo['msg'] = '请完善验证规则';
};
if(empty($validate['scene'][$scene])){
$returnInfo['code'] = 1001;
$returnInfo['msg'] = '请完善验证规则';
};
//根据验证场景,拿到字段的验证规则进行格式验证,如不规范,则获取提示信息进行返回
foreach($validate['scene'][$scene] as $key=>$val){
//验证场景
$rule = explode('|',$validate['rule'][$val]); //字段的验证规则
if(empty($rule)) continue;
foreach($rule as $ruleKey=>$ruleVal){
if(empty($ruleVal)) continue;
if(strpos($ruleVal,':')){
//区间验证
list($first, $singleRule) = explode(':',$ruleVal);
if(!SELF::$first($data[$val],$singleRule)){
if(isset($validate['message'][$val . "." . $first])){
$returnMsg = $validate['message'][$val . "." . $first];
}else{
$returnMsg = isset($validate['message'][$val]) ? $validate['message'][$val] : '错误';
}
$returnInfo['code'] = $validate['code'][$val] ? $validate['code'][$val] : 1001;
$returnInfo['msg'] = $returnMsg;
$returnInfo['tag'] = $val;
if($is_tip && $is_ajax){
exit(json_encode($returnInfo));
}elseif($is_tip && !$is_ajax){
error($returnInfo['msg']);
}else{
return $returnInfo;
}
}
}else{
//直接验证
if(!SELF::$ruleVal($data[$val])){
if(isset($validate['message'][$val . "." . $ruleVal])){
$returnMsg = $validate['message'][$val . "." . $ruleVal];
}else{
$returnMsg = isset($validate['message'][$val]) ? $validate['message'][$val] : '错误';
}
$returnInfo['code'] = $validate['code'][$val] ? $validate['code'][$val] : 1001;
$returnInfo['msg'] = $returnMsg;
$returnInfo['tag'] = $val;
if($is_tip && $is_ajax){
exit(json_encode($returnInfo));
}elseif($is_tip && !$is_ajax){
error($returnInfo['msg']);
exit;
}else{
return $returnInfo;
}
}
}
}
}
return $returnInfo;
}
/*************** 字符汉字验证 ***************
/**
* length 验证数据长度
* @param [string] $value [值]
* @param [mixed] $rule [规则]
* @return [bool] [TRUE OR FALSE]
*/
Static function length($value, $rule){
$length = mb_strlen((string) $value);
if (strpos($rule, ',')) {
list($min, $max) = explode(',', $rule);
return $length >= $min && $length <= $max;
}
return $length == $rule;
}
/**
* contentIsNull 判断是否为 空
* @param [string] $value [值]
* @return [bool] [TRUE OR FALSE]
*/
Static function contentIsNull($value){
return !empty(trim($value));
}
/**
* chs 判断是否为 纯汉字
* @param [string] $value [值]
* @return [bool] [TRUE OR FALSE]
*/
Static function chs($value){
return preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$value);
}
/**
* chsAlpha 判断是否为 汉字与字母组合
* @param [string] $value [值]
* @return [bool] [TRUE OR FALSE]
*/
Static function chsAlpha($value){
return preg_match("/^[\x{4e00}-\x{9fa5}a-zA-Z]+$/u",$value);
}
/**
* chsAlphaNum 判断是否为 汉字与字母与数字组合
* @param [string] $value [值]
* @return [bool] [TRUE OR FALSE]
*/
Static function chsAlphaNum($value){
return preg_match("/^[\x{4e00}-\x{9fa5}a-zA-Z0-9]+$/u",$value);
}
/**
* alphaNum 判断是否为 字母与数字组合
* @param [string] $value [值]
* @return [bool] [TRUE OR FALSE]
*/
Static function alphaNum($value){
return ctype_alnum($value);
}
/**
* alphaDash 判断是否为 字母和数字,下划线_及破折号-组合
* @param [string] $value [值]
* @return [bool] [TRUE OR FALSE]
*/
Static function alphaDash($value){
return preg_match("/^[A-Za-z0-9\-\_]+$/",$value);
}
/**
* alphaCoa 判断是否为 字母、数字、逗号组合
* @param [string] $value [值]
* @return [bool] [TRUE OR FALSE]
*/
Static function alphaCoa($value){
return preg_match("/^[A-Za-z0-9\,]+$/",$value);
}
/**
* alphaCoaColon 判断是否为 字母、数字、逗号、冒号组合
* @param [string] $value [值]
* @return [bool] [TRUE OR FALSE]
*/
Static function alphaCoaColon($value){
return preg_match("/^[A-Za-z0-9\,\:]+$/",$value);
}
/**
* alphaCoa 判断是否为 汉字、字母、数字、符号组合
* @param [string] $value [值]
* @return [bool] [TRUE OR FALSE]
*/
Static function chsAlphaNumDash($value){
return preg_match("/^[\x{4e00}-\x{9fa5}a-zA-Z0-9\-\_\(\)\(\)\,]+$/u",$value);
}
/**
* 成员管理 判断字母,汉字,数字,符号
*/
Static function chsAlphaNumDashEmail($value)
{
return preg_match("/[\x{4e00}-\x{9fa5}a-zA-Z0-9\-\_\(\)\(\)\,\@\.]+$/u",$value);
}
/**
* 操作日志 判断字母,数字,符号
*/
Static function alphaNumDashEmail($value)
{
return preg_match("/[a-zA-Z0-9\-\_\(\)\(\)\,\@\.]+$/u",$value);
}
/**
* alphaDash 判断是否为 数字,下划线_及破折号-组合
* @param [string] $value [值]
* @return [bool] [TRUE OR FALSE]
*/
Static function numberDash($value){
return preg_match("/^[0-9\-\_]+$/",$value);
}
/**
* numberDash 判断是否为 数字冒号组合
* @param [string] $value [值]
* @param [mixed] $rule [规则]
* @return [bool] [TRUE OR FALSE]
*/
Static function numberColon($value){
return preg_match("/^[0-9\:]+$/",$value);
}
/*************** 数字验证 ***************
/**
* max 验证数据最大长度
* @param [string] $value [值]
* @param [mixed] $rule [规则]
* @return [bool] [TRUE OR FALSE]
*/
Static function max($value, $rule)
{
$length = mb_strlen((string) $value);
return $length <= $rule;
}
/**
* min 验证数据最小长度
* @param [string] $value [值]
* @param [mixed] $rule [规则]
* @return [bool] [TRUE OR FALSE]
*/
Static function min($value, $rule)
{
$length = mb_strlen((string) $value);
return $length >= $rule;
}
/**
* egt 验证是否大于等于某个值
* @param [string] $value [值]
* @param [mixed] $rule [规则]
* @return [bool] [TRUE OR FALSE]
*/
Static function egt($value, $rule)
{
return $value >= $rule;
}
/**
* gt 验证是否大于某个值
* @param [string] $value [值]
* @param [mixed] $rule [规则]
* @return [bool] [TRUE OR FALSE]
*/
Static function gt($value, $rule)
{
return $value > $rule;
}
/**
* elt 验证是否小于等于某个值
* @param [string] $value [值]
* @param [mixed] $rule [规则]
* @return [bool] [TRUE OR FALSE]
*/
Static function elt($value, $rule)
{
return $value <= $rule;
}
/**
* lt 验证是否小于某个值
* @param [string] $value [值]
* @param [mixed] $rule [规则]
* @return [bool] [TRUE OR FALSE]
*/
Static function lt($value, $rule)
{
return $value < $rule;
}
/**
* eq 验证是否等于某个值
* @param [string] $value [值]
* @param [mixed] $rule [规则]
* @return [bool] [TRUE OR FALSE]
*/
Static function eq($value, $rule)
{
return $value == $rule;
}
/**
* decimals 判断小数位数
* @param [string] $value [值]
* @param [mixed] $rule [小数位数]
* @return [bool] [TRUE OR FALSE]
*/
Static function decimals($value,$rule){
return preg_match('/^[0-9]+(.[0-9]{1,'.$rule.'})?$/',$value);
}
/**
* number 判断是否为数字 (负数与小数都为 false)
* @param [string] $value [值]
* @return [bool] [TRUE OR FALSE]
*/
Static function number($value){
return ctype_digit((string) $value);
}
/**
* integer 判断是否整形
* @param [string] $value [值]
* @return [bool] [TRUE OR FALSE]
*/
Static function integer($value){
return filter_var($value, FILTER_VALIDATE_INT);
}
/**
* float 判断是否为浮点数字
* @param [string] $value [值]
* @return [bool] [TRUE OR FALSE]
*/
Static function float($value){
return filter_var($value, FILTER_VALIDATE_FLOAT);
}
/**
* money 判断是否为金额 「正数」
* @param [string] $value [值]
* @return [bool] [TRUE OR FALSE]
*/
Static function money($value){
return preg_match('/^[0-9]+(.[0-9]{1,2})?$/',$value);
}
/**
* in 验证是否在范围内
* @param [string] $value [值]
* @param [mixed] $rule [规则]
* @return [bool] [TRUE OR FALSE]
*/
Static function in($value, $rule)
{
return in_array($value, is_array($rule) ? $rule : explode(',', $rule));
}
/**
* notIn 验证是否不在某个范围
* @param [string] $value [值]
* @param [mixed] $rule [规则]
* @return [bool] [TRUE OR FALSE]
*/
Static function notIn($value, $rule)
{
return !in_array($value, is_array($rule) ? $rule : explode(',', $rule));
}
/**
* between 验证数据范围
* @param [string] $value [值]
* @param [mixed] $rule [规则]
* @return [bool] [TRUE OR FALSE]
*/
Static function between($value,$rule){
if (is_string($rule)) {
$rule = explode(',', $rule);
}
list($min, $max) = $rule;
return $value >= $min && $value <= $max;
}
/**
* notBetween 验证数据不在某个范围
* @param [string] $value [值]
* @param [mixed] $rule [规则]
* @return [bool] [TRUE OR FALSE]
*/
Static function notBetween($value, $rule)
{
if (is_string($rule)) {
$rule = explode(',', $rule);
}
list($min, $max) = $rule;
return $value < $min || $value > $max;
}
/*************** 其它验证 ***************
/**
* phone 判断是否为手机号
* @param [string] $value [值]
* @return [bool] [TRUE OR FALSE]
*/
Static function phone($value){
return preg_match("/^1[3456789]{1}\d{9}$/",$value);
}
/**
* email 判断是否为邮箱
* @param [string] $value [值]
* @return [bool] [TRUE OR FALSE]
*/
Static function email($value){
return filter_var($value, FILTER_VALIDATE_EMAIL);
}
/**
* url 判断是否为 有效的URL地址
* @param [string] $value [值]
* @return [bool] [TRUE OR FALSE]
*/
Static function url($value){
return filter_var($value, FILTER_VALIDATE_URL);
}
/**
* activeUrl 验证是否为合格的域名或者IP,支持A,MX,NS,SOA,PTR,CNAME,AAAA,A6, SRV,NAPTR,TXT 或者 ANY类型
* @param [string] $value [值]
* @return [bool] [TRUE OR FALSE]
*/
Static function activeUrl($value, $rule = 'MX')
{
if (!in_array($rule, ['A', 'MX', 'NS', 'SOA', 'PTR', 'CNAME', 'AAAA', 'A6', 'SRV', 'NAPTR', 'TXT', 'ANY'])) {
$rule = 'MX';
}
return checkdnsrr($value, $rule);
}
/**
* idcard 判断是否为身份证号
* @param [string] $value [值]
* @return [bool] [TRUE OR FALSE]
*/
Static function idcard($value){
return preg_match("/(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$)/",$value);
}
/**
* must 是否必填
* @param [string] $value [值]
* @return [bool] [TRUE OR FALSE]
*/
Static function must($value)
{
return !empty($value);
}
}