什么时候(在什么情况下)我们应该使用 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/