过滤 sanizite 用户输入浮点数 comma/dot 问题
filter sanizite user input float numbers comma/dot issue
试图找出如何以合理的方式在 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);
如果发布的值为 77.7,它会正确设置数量,但如果用户使用逗号而不是点设置数字(例如 77,7)$amount
returns 77
我希望在这两种情况下都达到 return 77.7。这可以用过滤器解决吗?
更新
反馈后(发布答案)我仍然有同样的问题:
使用时
$_POST['amount_ecb'] = str_replace(',', '.', $_POST['amount_ecb']);
之前
就是这样 returns
$_POST对象
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)
/* find , and replace with . if any; */
$_GET['search'] = str_replace(',', '.', $_GET['search']);
/* finally filter data */
$amount = filter_var($_GET['search'], FILTER_SANITIZE_NUMBER_FLOAT, array(
'flags'=>FILTER_FLAG_ALLOW_FRACTION));
终于找到了解决方法!(即使我认为这应该以某种方式内置到 input_filter
中)。
如果有人遇到同样的问题...
$amount_ecb = str_replace(',', '.', $_POST['amount_ecb']);
$amount = filter_var($amount_ecb,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
我将发布的值放入另一个变量 ($amount_ecb
),将逗号替换为点,然后在 $amount_ecb
上使用 filter_var
- 而不是在 filter_input
上使用全部.
试图找出如何以合理的方式在 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);
如果发布的值为 77.7,它会正确设置数量,但如果用户使用逗号而不是点设置数字(例如 77,7)$amount
returns 77
我希望在这两种情况下都达到 return 77.7。这可以用过滤器解决吗?
更新 反馈后(发布答案)我仍然有同样的问题:
使用时
$_POST['amount_ecb'] = str_replace(',', '.', $_POST['amount_ecb']);
之前
就是这样 returns
$_POST对象
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)
/* find , and replace with . if any; */
$_GET['search'] = str_replace(',', '.', $_GET['search']);
/* finally filter data */
$amount = filter_var($_GET['search'], FILTER_SANITIZE_NUMBER_FLOAT, array(
'flags'=>FILTER_FLAG_ALLOW_FRACTION));
终于找到了解决方法!(即使我认为这应该以某种方式内置到 input_filter
中)。
如果有人遇到同样的问题...
$amount_ecb = str_replace(',', '.', $_POST['amount_ecb']);
$amount = filter_var($amount_ecb,
FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
我将发布的值放入另一个变量 ($amount_ecb
),将逗号替换为点,然后在 $amount_ecb
上使用 filter_var
- 而不是在 filter_input
上使用全部.