PHP filter_var错误?

时间:2012-11-24 21:45:16

标签: php validation filter-var

以下代码成功地将字符串“0123.250”验证为有效的浮点数,而不是。这是一个PHP错误还是我做错了什么?

filter_var('0123.250', FILTER_VALIDATE_FLOAT);

2 个答案:

答案 0 :(得分:3)

来自PHP documentation on float literals

LNUM          [0-9]+
DNUM          ([0-9]*[\.]{LNUM}) | ({LNUM}[\.][0-9]*)
EXPONENT_DNUM [+-]?(({LNUM} | {DNUM}) [eE][+-]? {LNUM})

正如您所看到的,对于前导零没有限制,如这些位所示:[0-9]*[\.][0-9]+

由于页面从未提及八进制,我们需要假设前导零在解释中没有区别。

假设FILTER_VALIDATE_FLOAT应用完全相同的规则。

答案 1 :(得分:1)

前导0只是明确了千位的值为零的事实,这通常是由于缺少该位值的数字而暗示的。

如果你担心前导零是非重要数字的事实,我认为PHP不会严格遵循这个定义。