php - Zend框架2 : Digits vs Int validator

标签 php validation zend-framework zend-framework2

什么时候(在什么情况下)我们应该使用 Digits 验证器,什么时候应该使用 Int (IsInt) 验证器?

根据http://framework.zend.com/manual/current/en/modules/zend.i18n.validators.html#zend-i18n-validator-int在某些情况下(取决于区域设置),像 1,243 或 1.6546 这样的值可能会通过验证(请查看上面链接中的第三个示例)。

$validator = new Zend\I18n\Validator\IsInt();

$validator->isValid(1234);   // returns true
$validator->isValid(1234.5); // returns false
$validator->isValid('1,234'); // returns true <-------

如果我们不再次检查这些数据,在某些情况下可能会导致困惑。

我在 github 上看到许多项目/模块使用 Int 验证器来验证 id、电话或任何其他数字数据等数据。
使用数字验证器代替 Int 不是更安全吗?

数字和整数验证器有哪些优点和缺点?

最佳答案

Zend\I18n\Validator\IsInt 是一个验证器,它使用 NumberFormatter( link ) 来验证假设区域设置的数字。例如,号码 12345.67 在美国为“12,345.67”,在法国为“12 345,67”,在德国为“12.345,67”。

Zend\Validator\Digits 是一个原语。它的创建只是为了验证 PHP 的 type-casting问题。

答案是:

  • 如果您使用的是语言环境,请使用 Zend\I18n\Validator\IsInt
  • 如果您想验证字符串中是否仅包含数字,请使用 Zend\Validator\Digits (这意味着任何其他符号(如千位分隔符或逗号)都不会通过此验证器)并且区域设置对您来说并不重要。

关于php - Zend框架2 : Digits vs Int validator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31791401/

相关文章:

javascript - 输入允许数字和单个逗号

php - 获取当前 Controller

php - 优化随机 mysql 行获取性能

php - Braintree 无法执行充电 : Custom field is invalid: description

php - 是否可以使用 PhoneGap 或 Appcelerator 创建基于 php 的 iphone/android 应用程序?

jquery - 使用部分 View 的客户端验证

php - MySQL 查询 SUM 与 POWER 的问题

jquery - WordPress 中的自定义 ajax 请求

zend-framework - 我如何设置cron作业是zend框架项目的一部分的脚本

php - 使用 Zend Framework 安全地运行 Cron 作业