我有一个 php 脚本,它从管理员那里获取一个数字并更改关联的用户。在我意识到is_numeric
并且intval
函数有一个有趣的行为之前,这很好。这是我使用的代码:
if( ((empty($_GET["uid"])) || (!isset($_GET["uid"])))){
$id=0;
}else{
if(is_numeric($_GET["uid"])){
$id=intval($_GET["uid"]);
if($id<0){
$id=0;
}
}else{
$id=0;
}
}
但如果我12er3
作为输入发送到脚本,$id
将是12
. 显然这不是我想要的。我发现了几种检查输入以确保它包含数字(并且只有数字)的方法:1:
$id=(filter_var($_GET['uid'],FILTER_VALIDATE_INT)?(intval($_GET['uid'])<0?0:intval($_GET['uid'])):0);
2:
这个
3:
preg_match("/^\d+$/",$_GET["uid"])
我的问题是哪一种更好用?
******
注意:$id 应该是一个非负整数。
我没有回答它,因为没有人回答我的问题:我正在寻找最好的方法而不是方法!