数据验证及过滤
控制器中获取参数
在控制器中获取输入参数
$this->input('参数名', '默认值' = '')->val()
获取输入参数,$this->input()
返回一个DataFilter
对象, 默认使用过滤val()
过滤HTML标签,其他过滤方法
其他场景参数过滤
(new DataFilter(参数))->val()
int()
整数, 参数必须传是一个整数
uInt()
正整数, 必须大于0
float()
浮点数
fixed()
fixed(...$val)
限定值中的一个,PHP类似in_array()
函数
switch()
宽松版的fixed, 类似PHPswitch
语法, switch(...$values)
默认值放到第一个
range()
range(int $min, int $max)
, 限定区值范围
length()
length(int $min, int $max)
, 限定参数长度,中文字符算一位
alpha()
alpha()
验证字母
account()
account(int $min = 2, int $max = 12)
, 只能是 min~max 位字母数字或下划线(且不能以下划线开头)
url()
参数必须是一个网址,而且必须是绝对地址
chinese()
参数必须是中文
mobile()
验证手机号码
array()
array($delimiter = null)
, 必须是一个数组,如果指定$delimiter
参数,先调用explode
函数,url参数形式为params[]=a¶ms[]=b
json()
json(bool $array = true, int $depth = 128, int $options = 0)
必须是一个JSON
regx()
regx(string $pattern, string $msg = null)
执行正则匹配
closure()
closure(Closure $handler)
调用自定义匿名函数, 失败或捕获到异常返回false,通过验证使用函数返回结果
rule()
rule(string $name, &$val = null)
调用一个指定的规则验证
date()
date(&$unixTime = null)
, 验证参数是否是一个可以被strtotime()
函数抓换到日期
email()
email($addValidExpr = "/^[a-zA-Z0-9]([\w\-\.]?)+/")
校验参数是否是一个电子邮件地址
idCard()
idCard($justCheckLength = false)
验证参数是否是一个身份证号码,$justCheckLength
是否仅验证长度
default()
获取默认值
raw()
原样返回
val()
val($stripTags = true)
获取转义后的参数 $stripTags
是否过滤tag
uploader()
uploader(Uploader $uploader): array
, 获取上传数据参数必须是Cross\Lib\Upload\Uploader
对象
filter()
filter($filter = FILTER_DEFAULT, $options = null)
, PHP filter_var()
函数包装
all()
all(...$handler)
执行多个验证规则, 函数名称:参数
用冒号分隔
any()
any(...$handler)
规则跟all()
一致, 任意匹配一个就👌