PHP:最好的方法来检查input是否是一个有效的数字?

检查input是数字的最好方法是什么?

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

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

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

ctype_digit正是为此目的而构build的。

我用

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

validation一个值是否是数字,正数和整数

http://php.net/is_numeric

我不太喜欢ctype_digit,因为它不像“is_numeric”那样可读,而且当你确实想要validation一个值是数字的时候,它实际上有更less的缺陷。

filter_var()

 $options = array( 'options' => array('min_range' => 0) ); if (filter_var($int, FILTER_VALIDATE_INT, $options) !== FALSE) { // you're good } 
 return ctype_digit($num) && (int) $num > 0 

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