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

在PHP中是否可以使用filter_var过滤带小数点的整数?,php,Php,我需要在PHP中使用filter\u var像这样过滤值100.50。 现在我正在这样使用 filter\u var($\u POST['amount'],filter\u SANITIZE\u NUMBER\u INT):“” 它给我的结果是10050 我怎样才能解决这个问题。 提前感谢。如果您确实想使用filter\u var,因为您想删除所有其他字符,请使用filter\u SANITIZE\u NUMBER\u FLOAT,然后强制转换为整数。整数没有小数,因此验证必须失败(虽然我发现1

我需要在PHP中使用filter\u var像这样过滤值
100.50
。 现在我正在这样使用
filter\u var($\u POST['amount'],filter\u SANITIZE\u NUMBER\u INT):“”
它给我的结果是
10050

我怎样才能解决这个问题。

提前感谢。

如果您确实想使用filter\u var,因为您想删除所有其他字符,请使用filter\u SANITIZE\u NUMBER\u FLOAT,然后强制转换为整数。

整数没有小数,因此验证必须失败(虽然我发现
100.50
变成
10050
的结果在PHP的end.WTF上非常奇怪?)

您需要使用不同的过滤器,例如
过滤器\u验证\u浮动


intval
返回变量的整数部分(不带小数点的所有内容)

intval(100.50)
将返回
100
。但是,我不确定这是否是您想要的。

数字100.50不是一个整数,它是一个浮点数。要过滤浮点数的变量,您应该使用
filter\u SANITIZE\u number\u 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或更高版本时,这才有效。

那么您的预期结果是什么?这是因为他使用的是卫生过滤器,而不是验证过滤器。文档中提到卫生过滤器:“删除除数字、加号和减号以外的所有字符。”