检查输入是否为数字的最佳方法是什么?
这些数字不应该有效。只有数字如:123,012(12),正数应该有效。 这是我当前的代码:
$num = (int) $val;
if (
preg_match('/^\d+$/', $num)
&&
strval(intval($num)) == strval($num)
)
{
return true;
}
else
{
return false;
}
答案 0 :(得分:64)
ctype_digit
正是为此目的而建立的。
答案 1 :(得分:37)
我用
if(is_numeric($value) && $value > 0 && $value == round($value, 0)){
验证值是否为数字,正数和积分
我真的不喜欢ctype_digit,因为它不像“is_numeric”那样可读,并且当你真的想验证某个值是数字时,它实际上有较少的缺陷。
答案 2 :(得分:17)
$options = array(
'options' => array('min_range' => 0)
);
if (filter_var($int, FILTER_VALIDATE_INT, $options) !== FALSE) {
// you're good
}
答案 3 :(得分:6)
return ctype_digit($num) && (int) $num > 0
答案 4 :(得分:6)
对于PHP 4或更高版本:
<?PHP
$input = 4;
if(is_numeric($input)){ // return **TRUE** if it is numeric
echo "The input is numeric";
}else{
echo "The input is not numeric";
}
?>
答案 5 :(得分:0)
最安全的方式
if(preg_replace('/[0-9\.\-]/', '', $value) == ""){
//if all made of numbers "-" or ".", then yes is number;
}