PHP-使用NumberFormatter验证小数

PHP-使用NumberFormatter验证小数,php,Php,我正在开发的应用程序接受来自非英语地区(主要是丹麦)用户的十进制数字 验证数字的代码如下所示: $fmt = new NumberFormatter($locale, NumberFormatter::DECIMAL); $amount = $fmt->parse($input); if ($amount === false) { echo "There has been an error with the number {$input}"; } 这很好,因为它抛出字符串错误并接

我正在开发的应用程序接受来自非英语地区(主要是丹麦)用户的十进制数字

验证数字的代码如下所示:

$fmt = new NumberFormatter($locale, NumberFormatter::DECIMAL);
$amount = $fmt->parse($input);
if ($amount === false) {
    echo "There has been an error with the number {$input}";
}
这很好,因为它抛出字符串错误并接受小数。我对NumberFormatter的问题是,例如“12,34,,,,5,34”被接受并格式化为12.34

现在,“12,34,,,,5,34”不是十进制数,应该拒绝。我尝试将其与
is\u numeric()
组合,但
is\u numeric()
拒绝了“12,34、、、、、、5,34”和12,34


我的问题是,有没有办法让NumberFormatter拒绝“12,34,,,,,5,34”,因为这不是数字???

NumberFormatter不打算用作输入验证。您可以尝试/方法代替:


<代码>您可以使用No.MultFrast::Topnn*DeMall并提供您自己的验证,如果我能理解为什么和如何可以以及为什么12、34、5、34可以被接受为DimimalIT,如果您考虑整个字符串,但是数字格式化程序不打算验证输入,因此它解析字符串,直到遇到无效为止。字符。就像PHP会做的一样。谢谢你的回答:)我喜欢这种方法,我认为这种方法通常可以工作。但这里的问题是,所有带逗号的浮点数由于某种奇怪的原因都会给出false