2012-02-15 35 views
0

我该如何检查数字只能从-10到+10的正数?如何检查数字(包括负数)?

这是我的,但我认为这不是安全:

if(isset($_POST['number']) && ctype_digit($_POST['number']) && $_POST['number']>=-10 && $_POST['number']<=10){ 
    //do something 
} 

和形式:

Input a number between -10 and 10: <input type="text" name="number" size="5" /> 
+0

我加入了PHP的标签,使PHP社区可以看到你的问题的一个数字。 – sch 2012-02-15 22:34:30

+0

为什么你会希望人们在这样一个有限数字的时候输入它?为什么不添加一个选择框? – Erik 2012-02-15 23:02:23

回答

2
if(isset($_POST['number'])) { 
    $num = intval($_POST['number']); 
    if($num >= -10 && $num <= 10) { 
     // do something 
    } 
} 

还有其他的方法,但是一会工夫。任何不能转换为数字的东西都将被视为零。如果不期望的行为,添加:

&& "".$num == $_POST['number'] 

为了内心的IF语句,以确保没有非数字字符从输入中删除。

1

检查变量是否包括零个的负值

$x = '-22'; 
if (isNumber($x, ['zero','negative'])) 
    echo 'Yes'; 
else 
    echo 'No'; 

isNumber($x, $includes=[]) 
{  
    if (is_int($x)) { 
     if ($x === 0) { 
      if (in_array('zero', $includes)) 
       return true; 
     } elseif ($x < 0) { 
      if (in_array('negative', $includes)) 
       return true; 
     } else 
      return true; 
    } elseif (is_string($x)) { 
     if ($x == '0') { 
      if (in_array('zero', $includes)) 
       return true; 
     } elseif ($x[0] == '-') { 
      if (in_array('negative', $includes)) 
       return ctype_digit(substr($x, 1)); 
     } else 
      return ctype_digit($x); 
    } 
} 
相关问题