何时(在什么情况下)我们应该使用Digits验证器以及何时应该使用Int(IsInt)验证器?
根据http://framework.zend.com/manual/current/en/modules/zend.i18n.validators.html#zend-i18n-validator-int在某些情况下(取决于区域设置),1,243或1.6546等值可能会通过验证(请参阅上面链接中的第3个示例)。
$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,phone或任何其他数字数据等数据。
使用Digits验证器而不是Int?
Digits和Int验证器有哪些优点和缺点?
答案 0 :(得分:2)
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
并且区域设置对于你。