我需要使用PHP中的filter_var来过滤像100.50
这样的值。
现在我正在使用这个
filter_var($_POST['amount'],FILTER_SANITIZE_NUMBER_INT) : '';
它给我的结果是10050
我怎样才能解决这个问题
提前谢谢。
答案 0 :(得分:6)
整数没有小数部分,因此验证必须失败(尽管我发现100.50
的卫生结果在PHP结束时变成10050
非常奇怪.WTF?)。
您需要使用其他过滤器,例如FILTER_VALIDATE_FLOAT
。
答案 1 :(得分:2)
数字100.50 不是一个整数,它是一个浮点数。要过滤浮动变量,您应该使用FILTER_SANITIZE_NUMBER_FLOAT
。这将删除所有不需要的字符并留下浮动。
以下是一些示例代码:
$_POST['amount'] = 100.50;
// Use FILTER_FLAG_ALLOW_FRACTION to allow decimal places to remain without being removed
$amount = filter_var($_POST['amount'],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION);
print $amount;
// When you print it will print out 100.50
请记住,只有安装的PHP版本为5.2.0或更高版本才能使用。
答案 2 :(得分:0)
如果您因为要删除所有其他字符而绝对要使用filter_var,请使用FILTER_SANITIZE_NUMBER_FLOAT然后转换为整数。
答案 3 :(得分:0)
intval
返回变量的整数部分(没有小数位的所有内容)。
intval(100.50)
会返回100
。但是,我不确定这是不是你想要的。