Php settype()与filter_var()的比较

Php settype()与filter_var()的比较,php,sanitization,data-cleaning,Php,Sanitization,Data Cleaning,如果下面几行更好地用于确保我的代码更安全,那么这一点就更好了。我应该使用filter_var函数的settype函数吗 settype($number,'integer') 或 谢谢你settype和(int)比filter\u var更好。因为filter\u var有很多逻辑判断。正如filter\u SANITIZE\u NUMBER\u INT所说: 删除除数字、加号和减号以外的所有字符 因此,如果您希望在SQL查询中使用一个ID,我将使用正则表达式检查我是否只有数字/^[0-9]+

如果下面几行更好地用于确保我的代码更安全,那么这一点就更好了。我应该使用filter_var函数的settype函数吗

settype($number,'integer') 


谢谢你

settype
(int)
filter\u var
更好。因为
filter\u var
有很多逻辑判断。

正如
filter\u SANITIZE\u NUMBER\u INT
所说:

删除除数字、加号和减号以外的所有字符

因此,如果您希望在SQL查询中使用一个ID,我将使用正则表达式检查我是否只有数字
/^[0-9]+$/
。因为
FILTER\u SANITIZE\u NUMBER\u INT
将允许
-12
,这在本文中没有意义

filter_var和settype之间的主要区别在于,一个将变量解析为字符串并返回字符串,另一个将其转换为整数

$string = "+12";
var_dump(filter_var($string, FILTER_SANITIZE_NUMBER_INT));
settype($string, "integer");
var_dump($string);
输出:

string(3) "+12"
int(12)

因此,它实际上取决于上下文。

或者将其转换为带有
(int)
的int。这三个选项都是一样的。这取决于你想用
$number
做什么。哥们,我想你需要一些sleep@Mathieu对不起,也许我也需要一些睡眠!
string(3) "+12"
int(12)