我在验证数字时遇到了一个真正的问题。
如果我的表单有一个货币值字段(1.99),我可以使用floatval验证输入并保存在我的数据库中。
但如果值是科学记数法(1E7),则操作将返回true,我将在DB中保存时遇到问题。
我几天试图解决这个问题,我怎么能解决这个问题呢?
提前谢谢
示例:
floatval( '17E20' ) // float(1.7E+21)
floatval( '0xFF' ) // float(0)
floatval( '7E-10' ) // float(7.0E-10)
floatval( '1.23X' ) // float(1.23)
答案 0 :(得分:1)
来自浏览器的用户输入是字符串。我们需要在.
或,
之后使用2位数验证字符串作为简单的小数部分表示法。
$value = '122.33';
$result = preg_match('/^\d+([\.,]\d{1,2})?$/', $value);
// ^ one or two digit
// ^ dot or comma
// ^ at least one digit