我正在使用PHP filter_input函数来解析HTML表单输入。其中一个输入字段代表金额。我希望我有一些用户使用逗号,有些用点作为小数分隔符。 FILTER_VALIDATE_FLOAT过滤器有一个十进制选项,但我还没有找到一种干净的方法来接受这两个字符作为小数分隔符。
目前,我的代码如下所示,但这不接受123.45
等数量。
$money = filter_input(INPUT_POST, 'money', FILTER_VALIDATE_FLOAT, array('options' => array('decimal' => ',')));
是否有任何标准/干净的方式接受几种类型的小数分隔符,而无需编写自定义解析函数?
答案 0 :(得分:5)
我使用filter_var
代替filter_input
重写了我的代码,并使用了hd' str_replace
技巧。最终结果如下:
$temp_money = str_replace(".", ",", $_POST['money']);
$money = filter_var($temp_money, FILTER_VALIDATE_FLOAT, array('options' => array('decimal' => ',')));
如果$_POST['money']
为null,则$money
也将为null,这与filter_input
的行为相同,因此我的验证代码的其余部分不必更改。
答案 1 :(得分:0)
$money = filter_input(INPUT_POST, 'money', FILTER_VALIDATE_FLOAT) || filter_input(INPUT_POST, 'money', FILTER_VALIDATE_FLOAT, array('options' => array('decimal' => ',')));