【发布时间】:2015-05-11 11:24:09
【问题描述】:
我正在使用 PHP filter_input 函数来解析 HTML 表单输入。其中一个输入字段代表金额。我希望我会有一些用户使用逗号和一些使用点作为小数分隔符。 FILTER_VALIDATE_FLOAT 过滤器有一个小数选项,但我还没有想出一个干净的方法来接受这两个字符作为小数分隔符。
目前我的代码类似于以下行,但这不接受像 123.45 这样的金额。
$money = filter_input(INPUT_POST, 'money', FILTER_VALIDATE_FLOAT, array('options' => array('decimal' => ',')));
是否有任何标准/干净的方式来接受多种类型的小数分隔符,而无需编写自定义解析函数?
【问题讨论】:
-
之前为什么不
$_POST['money'] = str_replace(".", ",", $_POST['money'])上线? -
这样做会改变 $_POST 数组中的值,但 filter_input 调用仍然返回 false。如果出现验证错误,我的系统会将用户发送回表单,并用之前发布的内容填写。根据您的想法,我的系统将用户发送回表单并用逗号更改他的点(这意味着如果他重新发布相同的数据,它将通过验证)。我不确定为什么 filter_input 仍然失败,即使我之前做了 str_replace。
标签: php