试图找出如何以合理的方式在php中使用过滤器

//Do sanization of user input
//$_POST['amount_ecb'] can be 77,7 or 77.7

$amount = filter_input(INPUT_POST, 'amount_ecb',
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);

如果posted值是77.7,那么它会正确地设置amount,但是如果用户用逗号而不是点(例如77,7)设置number,则返回77
我希望在两种情况下都能返回77.7。这可以用过滤器解决吗?
更新
在反馈(张贴答案)后,我仍然有同样的问题:
使用时
$_POST['amount_ecb'] = str_replace(',', '.', $_POST['amount_ecb']);

之前
这是它回来了
$后对象
array (size=5)
  'amount_ecb' => string '77.7' (length=4)
  'from_ecb' => string 'GBP' (length=3)
  'to_ecb' => string 'SEK' (length=3)
  'submit' => string 'Calculate currency' (length=18)
  'result_decimals' => string '4' (length=1)

金额
string '777' (length=3)

最佳答案

终于找到解决办法了!(即使我认为这应该以某种方式内置到input_filter中)。
如果有人偶然发现同样的问题…

$amount_ecb = str_replace(',', '.', $_POST['amount_ecb']);
$amount = filter_var($amount_ecb,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);

我将发布的值放入另一个变量($amount_ecb),用点替换逗号,然后在filter_var上使用$amount_ecb-而不是使用filter_input

10-05 19:59