PHP: Best way to check if input is a valid number?

2019-01-17 09:05发布

What is the best way of checking if input is numeric?

  • 1-
  • +111+
  • 5xf
  • 0xf

Those kind of numbers should not be valid. Only numbers like: 123, 012 (12), positive numbers should be valid. This is mye current code:

$num = (int) $val;
if (
    preg_match('/^\d+$/', $num)
    &&
    strval(intval($num)) == strval($num)
    )
{
    return true;
}
else
{
    return false;
}

5条回答
一纸荒年 Trace。
2楼-- · 2019-01-17 09:45

filter_var()

$options = array(
    'options' => array('min_range' => 0)
);

if (filter_var($int, FILTER_VALIDATE_INT, $options) !== FALSE) {
 // you're good
}
查看更多
你好瞎i
3楼-- · 2019-01-17 09:49
return ctype_digit($num) && (int) $num > 0
查看更多
乱世女痞
4楼-- · 2019-01-17 09:57

For PHP version 4 or later versions:

<?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";
}
?>
查看更多
Melony?
5楼-- · 2019-01-17 09:59

ctype_digit was built precisely for this purpose.

查看更多
Root(大扎)
6楼-- · 2019-01-17 09:59

I use

if(is_numeric($value) && $value > 0 && $value == round($value, 0)){

to validate if a value is numeric, positive and integral

http://php.net/is_numeric

I don't really like ctype_digit as its not as readable as "is_numeric" and actually has less flaws when you really want to validate that a value is numeric.

查看更多
登录 后发表回答