是否可以使用PHP中的filter_var过滤带小数点的整数?

时间:2010-08-21 11:33:50

标签: php

我需要使用PHP中的filter_var来过滤像100.50这样的值。 现在我正在使用这个 filter_var($_POST['amount'],FILTER_SANITIZE_NUMBER_INT) : '';
它给我的结果是10050 我怎样才能解决这个问题 提前谢谢。

4 个答案:

答案 0 :(得分:6)

整数没有小数部分,因此验证必须失败(尽管我发现100.50的卫生结果在PHP结束时变成10050非常奇怪.WTF?)。

您需要使用其他过滤器,例如FILTER_VALIDATE_FLOAT

List of PHP validate filters

答案 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。但是,我不确定这是不是你想要的。