【问题标题】:Decimal validation + PHP?十进制验证+ PHP?
【发布时间】:2011-01-14 17:54:47
【问题描述】:

如何在 PHP 中进行十进制数验证?

:)

(小数点可选) 它应该接受... 0 , 1、 2、 0.123 , 0.2 , 12.34 等

【问题讨论】:

标签: php validation decimal option


【解决方案1】:

这些中的任何一个都适合您的需求吗?

【讨论】:

  • xcellent ...thanx 很多...这样一个fn。可用吗?我在谷歌上搜索...!
  • @dev646:确保您阅读了 is_float 函数页面上的 cmets。他们真的很有帮助
【解决方案2】:

已经发布了英语语言环境的答案。 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'
}

【讨论】:

  • 我一直是playing with this,实际上它更像是一个宽容的解析器,而不是一个合适的验证器。这可以满足您的需求。
【解决方案3】:

建议的 is_float/is_numeric 不起作用,因为 is_float 不接受请求参数(它们是字符串),并且 is_numeric 将接受类似于 "+.1e0" 的东西,这不是你想要的。可靠的方法是使用正则表达式进行验证,例如

 $is_decimal = preg_match('/^\d+(\.\d+)?$/', $some_string);

表达式可能会因您的需要而异。例如,上面也将接受“000.00”或“111111111111111”。

【讨论】:

  • -1 if ((float)$a==$a) 可以接受,但不能接受正则表达式
【解决方案4】:

使用is_float...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    • 2011-01-30
    • 1970-01-01
    • 2016-11-15
    • 1970-01-01
    相关资源
    最近更新 更多