PHP: 检查输入是否为有效数字的最佳方法?

检查输入是否为数字的最佳方法是什么?

  • 1 -
  • + 111 +
  • 5xf
  • 谢谢

这些数字不应该是有效的。只有像: 123,012(12)这样的数字,正数应该是有效的。 这是我现在的代码:

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

ctype_digit 就是为此而建造的。

return ctype_digit($num) && (int) $num > 0

我吸毒

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

验证一个值是否为数值、正数和整数

Http://php.net/is_numeric

我不太喜欢 ctype _ digital,因为它不像“ is _ numeric”那样可读,而且当您真正想验证一个值是数值时,它实际上缺陷较少。

filter_var()

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


if (filter_var($int, FILTER_VALIDATE_INT, $options) !== FALSE) {
// you're good
}

对于 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";
}
?>

最安全的方法

if(preg_replace('/^(\-){0,1}[0-9]+(\.[0-9]+){0,1}/', '', $value) == ""){
//if all made of numbers "-" or ".", then yes is number;
}