FuelPHP标准验证规则汇总

大家好,
我是开发团队 Wild Team 的成员 Mandai。
这次,我想尽可能多地分享关于 FuelPHP 标准验证规则的信息,包括一些你应该知道的事项、一些意想不到的用法,以及一些文档中没有包含的信息。
本文使用的 FuelPHP 版本是 1.7.2。

 

必需的

规则名称 争论
必需的 没有任何

必填字段检查,如果值为“false”、“null”、“空字符串”或“不包含任何元素的空数组”以外的任何值,则检查通过。
请注意,除必填字段之外的其他验证规则允许空字符串通过。

 

required_with

规则名称 争论
required_with 字段名

只有当名为 $fieldname 的字段中的数据符合要求时,才会应用此规则。例如,
您可以使用此规则来验证文本框的内容是否已选中复选框。

 

匹配值

规则名称 争论
匹配值 $compare, $strict = false

比较 $compare 中的数据是否相同。
对于字符串和数字,$compare 使用“==”比较类型。
如果 $strict 为 false,则比较时忽略类型,使用“=”。

如果 $compare 是一个数组,它会扫描该数组并按顺序进行比较,包括使用“==”比较类型。
如果存在相等的值,则验证通过。
如果 $strict 为 false,则会忽略类型进行比较,同样使用“=”比较类型。

 

匹配模式

规则名称 争论
匹配模式 模式

preg_match 函数使用正则表达式进行模式匹配。
借助 Fuelphp 的 fieldset,您可以快速、优雅且灵活地批量生成输入表单 | Beyond Inc.也提供了一个示例,欢迎查看。

 

匹配字段

规则名称 争论
匹配字段 $field

将与 $field 中指定的字段进行比较,包括类型检查。
由于此规则不能指定严格模式,因此仅当 $field 为“==="”或空字符串时才会通过。

 

匹配集合

规则名称 争论
匹配集合 $collection = array(), $strict = false

如果 `$collection` 是一个数组,`in_array` 函数会将其与数组中的值进行比较。
如果 `$strict` 为真,则 `in_array` 函数的第三个参数设置为真,并执行包含类型检查的严格比较。

如果 `$collection` 不是数组,则所有给定的参数都会被转换为数组,并使用 `in_array` 函数进行比较。
例如,如果参数数据为“1, true, 2, 'test3'”,即使您在表单中输入 1,验证也不会通过,因为 `$strict` 被设置为 true(因为通过 POST 发送的数字会被视为字符串)。
实际上,唯一能通过此验证的字符串是 `test3`。

此外,如果使用数据“1, 'true', 2, 'test3'”作为参数,虽然$strict看起来会被设置为true,但由于它不是布尔值,因此比较操作不会进行类型检查。
所以,在验证通过POST发送的数据时,只有“true”和“test3”会通过验证。

规范不清楚,难以理解,而且由于它的行为match_value 规则的是数组时的行为相同,因此将数组以外的数据输入到 $collection 中并使用它可能会是一个意想不到的陷阱。

 

最小长度

规则名称 争论
最小长度 长度

如果字符串长度大于等于 $length,则验证通过。
如果长度为 0(即空字符串),验证也通过,因此即使您将 $length 设置为 1,它也不会成为必填字段验证。

 

最大长度

规则名称 争论
最大长度 长度

如果字符串长度小于或等于 $length,则测试通过。

 

精确长度

规则名称 争论
精确长度 长度

如果字符串长度为 $length,则可以传递该参数。
如果长度为 0(即空字符串),也可以传递该参数,因此它通常与 required 参数结合使用。

 

有效日期

规则名称 争论
有效日期 $format = null, $strict = true

此函数验证给定的字符串是否为符合日期和时间格式的数据。
显然,可以传递空字符串,但如果您仅查看文档,可能不会意识到无需指定 `$format`。
如果 `$format` 设置了格式,则 `date_parse_from_format` 函数将根据 `$format` 进行解析。
如果 `$format` 为空,则由 `date_parse` 函数进行解析,因此无需指定格式(尽管可能会误传递一些可以解析为日期的数据)。

将 $format 设置为 null 的优点是,它允许规则同时传递“Ymd”和“Y/m/d”。

 

有效邮箱

规则名称 争论
有效邮箱 没有任何

使用 `filter_var` 函数验证字符串是否为有效的电子邮件地址。
与使用自定义正则表达式和 `preg_match` 函数相比,使用 `filter_var` 函数验证电子邮件地址要安全得多。

 

有效邮箱

规则名称 争论
有效邮箱 分隔符(可选)

使用 explode 函数根据 $separator 中设置的字符串分解输入数据后,循环验证 valid_email 规则。

$separator 的默认值为 ","。

 

有效网址

规则名称 争论
有效网址 没有任何

filter_var 函数用于验证字符串是否为有效的 URL。filter_var
函数的一个缺陷是,即使 URL 本身是有效的,它也无法处理包含多字节字符的 URL。

 

有效IP

规则名称 争论
有效IP 没有任何

使用 filter_var 函数验证字符串是否为有效的 IP 地址。
此函数可用于验证 IPv4 和 IPv6 地址。

 

数值最小值

规则名称 争论
数值最小值 最小值

验证输入值是否大于或等于 $min_val(数值类型)。
内部会将输入值和 $min_val 转换为浮点数进行比较,因此也可以比较小数。

 

数值最大值

规则名称 争论
数值最大值 $max_val

验证输入值是否小于或等于 $max_val(数值类型)。
内部会将输入值和 $max_val 转换为浮点数进行比较,因此也可以比较小数。

 

数值介于

规则名称 争论
数值介于 最小值,最大值

验证输入值是否大于等于 $min_val 且小于等于 $max_val。
这同时验证了 numeric_min 和 numeric_max 规则。

 

有效字符串

规则名称 争论
有效字符串 $flags = array('alpha', 'utf8')

只需选择一条规则即可构建通用正则表达式并执行验证。
`match_pattern`执行相同的操作
存储在 `$flags` 数组中的字符串如下所示。

旗帜 目标角色
阿尔法 大写和小写字母
数字 数字 0-9
特价 按字母顺序(字符串模式与 [:alpha:] 匹配)
空间 半宽空间
换行符 \r \n
标签 \t
标点 .  ,  !  ?  :  ;  &
单引号 '
双引号 "
破折号 _ -
正斜杠 /
反斜杠 \
括号 [ ]
牙套 ( )
utf8 { }

在内部,这些规则会被组合起来创建一个正则表达式。
你需要在一个数组中指定其中的几个规则,但如果输入数据格式是固定的,则有一个隐藏函数会自动设置与数据格式匹配的规则。

对于 URL,只需设置“$flags = 'url_safe'”即可设置三个标志:'alpha'、'numeric' 和 'dashes'。
这些规则(或者说规则集,即多条规则的集合?)实际上是作为一项隐藏功能存在的。

规则集名称 待制定的规则
阿尔法 alpha,utf8
字母数字 字母、UTF-8、数字
特价 特殊,utf8
url_safe 字母、数字、破折号
整数,数值 数字
漂浮 数字,点
引号 单引号,双引号
斜杠 正斜杠,反斜杠
全部 字母、UTF-8编码、数字、特殊字符、空格、换行符、制表符、标点符号、单引号、双引号、破折号、正斜杠、反斜杠、方括号、花括号

“所有人”的绝望程度令人难以置信(我什么时候才能用上这个呢)。

 
就是这样。

如果您觉得这篇文章有帮助,请点赞!
1
加载中...
1 票,平均:1.00 / 11
7,123
X Facebook 哈特纳书签 口袋

写这篇文章的人

关于作者

万代洋一

我的主要工作是为社交游戏开发 Web API,但我也很幸运能够做很多其他工作,包括营销。
此外,我在 Beyond 中的肖像权被视为 CC0。