【发布时间】:2011-01-14 17:54:47
【问题描述】:
如何在 PHP 中进行十进制数验证?
:)
(小数点可选) 它应该接受... 0 , 1、 2、 0.123 , 0.2 , 12.34 等
【问题讨论】:
标签: php validation decimal option
如何在 PHP 中进行十进制数验证?
:)
(小数点可选) 它应该接受... 0 , 1、 2、 0.123 , 0.2 , 12.34 等
【问题讨论】:
标签: php validation decimal option
这些中的任何一个都适合您的需求吗?
【讨论】:
已经发布了英语语言环境的答案。 NumberFormatter::parse() 负责其他语言环境,如果您需要这样的行为:
$formatter = new NumberFormatter('de-DE', NumberFormatter::PATTERN_DECIMAL);
if ($formatter->parse($value) !== false) {
# A correct numeric value in german locale, like '12.345,00001'
}
【讨论】:
建议的 is_float/is_numeric 不起作用,因为 is_float 不接受请求参数(它们是字符串),并且 is_numeric 将接受类似于 "+.1e0" 的东西,这不是你想要的。可靠的方法是使用正则表达式进行验证,例如
$is_decimal = preg_match('/^\d+(\.\d+)?$/', $some_string);
表达式可能会因您的需要而异。例如,上面也将接受“000.00”或“111111111111111”。
【讨论】:
if ((float)$a==$a) 可以接受,但不能接受正则表达式
使用is_float...
【讨论】: