在PHP中是否可以使用filter_var过滤带小数点的整数?
我需要在PHP中使用filter\u 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
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或更高版本时,这才有效。那么您的预期结果是什么?这是因为他使用的是卫生过滤器,而不是验证过滤器。文档中提到卫生过滤器:“删除除数字、加号和减号以外的所有字符。”