PHP中的数据验证,使用respect/validation

简介

数据的验证(validation)是经常用的一个操作,通常是使用正则表达式的方式进行验证。但是,“当你尝试使用正则表达式解决一个问题时候,那么,现在你有两个问题了。”

 

PHP5.2.0以后内置了一个filter 扩展可以用于数据的过滤和净化,这个内置扩展的最大问题是功能太弱,能验证的东西太少。基本上就是验证一下ip url 邮件地址,别的就没有了,简单用用还是可以可以的,复杂的功能就别指望了。

 

这里将要介绍的respect/validation是一个PHP的验证库,在githubcomposerpackagist上都是同类中星星最多的。

特点:

1 使用简单,支持链式操作,可以组合不同的验证规则,支持对对象、数组等组合数据形式的验证。

2 内容丰富,可以验证的数据类型非常多,包含了大部分的常见验证:

 

 

 

安装

Composer 安装

respect/validation 已经提交到Packagist,可以直接使用composer下载:

composer require respect/validation

Packagist国内慢的几乎不能用,可以换一个镜像或者搭高速梯子。

基本使用

Helloword

创建一个验证类的实例,然后调用validate方法,validate方法返回true或者false

验证数字:

use Respect\Validation\Validator as v;

$number = 123;v::numeric()->validate($number); //true

链式验证(awesome

最方便强大的feature就是链式的验证操作:

 

验证日期处于某个范围内

v::date('Y-m-d')->between('1980-02-02', 'now')->validate('1988-08-08');

Date between 是不同的rule,第一个date('Y-m-d')负责验证日期格式正确,后面的between负责验证在区间内。

 

验证一个不包含空格,长度在1-15之间的字符串:

$usernameValidator = v::alnum()->noWhitespace()->length(1,15);

$usernameValidator->validate('alganet'); //true

 

等等。

 

Input optional

 

注意,默认情况下,除非文档特别说明,验证函数默认参数是可选的,所以空输入都会得到true的验证结果。可以使用notEmpty()来禁止这个行为。验证字符串不为空:

v::alnum()->notEmpty()->validate(''); //false

 

实际上在这里你可能需要更加的小心的验证,例如domain这个rule,就不符合:

v::domain()->validate(''); //true

上面的验证结果会是true,而不是false

规则反转

v::not(v::int())->validate(10); //false, input must not be integer

 

获取验证失败信息

验证一共有3个可用的函数validateassertcheckvalidate返回true或者falseassertcheck则能够抛出异常,异常信息中携带具体的错误信息。

如果验证通过,assert函数返回true,验证不通过则抛出异常。

具体使用参考文档。

参考

1  GithubRespect/Validation

2  官网:http://respect.li/Validation/

转载于:https://www.cnblogs.com/robotech/p/10206573.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<?php /** &nbsp;*&nbsp;CakePHP(tm)&nbsp;:&nbsp;Rapid&nbsp;Development&nbsp;Framework&nbsp;(https://cakephp.org) &nbsp;*&nbsp;Copyright&nbsp;(c)&nbsp;Cake&nbsp;Software&nbsp;Foundation,&nbsp;Inc.&nbsp;(https://cakefoundation.org) &nbsp;* &nbsp;*&nbsp;Licensed&nbsp;under&nbsp;The&nbsp;MIT&nbsp;License &nbsp;*&nbsp;For&nbsp;full&nbsp;copyright&nbsp;and&nbsp;license&nbsp;information,&nbsp;please&nbsp;see&nbsp;the&nbsp;LICENSE.txt &nbsp;*&nbsp;Redistributions&nbsp;of&nbsp;files&nbsp;must&nbsp;retain&nbsp;the&nbsp;above&nbsp;copyright&nbsp;notice. &nbsp;* &nbsp;*&nbsp;@copyright&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Copyright&nbsp;(c)&nbsp;Cake&nbsp;Software&nbsp;Foundation,&nbsp;Inc.&nbsp;(https://cakefoundation.org) &nbsp;*&nbsp;@link&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;https://cakephp.org&nbsp;CakePHP(tm)&nbsp;Project &nbsp;*&nbsp;@since&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.0.0 &nbsp;*&nbsp;@license&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;https://opensource.org/licenses/mit-license.php&nbsp;MIT&nbsp;License &nbsp;*/ namespace&nbsp;Cake\Validation; /** &nbsp;*&nbsp;Describes&nbsp;objects&nbsp;that&nbsp;can&nbsp;be&nbsp;validated&nbsp;by&nbsp;passing&nbsp;a&nbsp;Validator&nbsp;object. &nbsp;*/ interface&nbsp;ValidatableInterface { &nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Validates&nbsp;the&nbsp;internal&nbsp;properties&nbsp;using&nbsp;a&nbsp;validator&nbsp;object&nbsp;and&nbsp;returns&nbsp;any &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;validation&nbsp;errors&nbsp;found. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;\Cake\Validation\Validator&nbsp;$validator&nbsp;The&nbsp;validator&nbsp;to&nbsp;use&nbsp;when&nbsp;validating&nbsp;the&nbsp;entity. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;array &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;validate(Validator&nbsp;$validator); }验证(Verification)是信息术语,编译过程的一部分,在该过程,对代码进行检查,看是否与定义的特定规则集相一致,以允许检验某些安全要求。公共语言运行库可以验证Microsoft间语言(MSIL)。服务器端验证就是当表单提交后,在服务器端通过JAVA,等服务器端代码对客户输入进行验证

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值