数据验证及过滤

控制器中获取参数

在控制器中获取输入参数

$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&params[]=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()一致, 任意匹配一个就👌