PHP: Лучший способ проверить, является ли введенное число допустимым?


Как лучше всего проверить, является ли ввод числовым?

  • 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;
}
Author: John Conde, 2012-07-10

5 answers

ctype_digit был построен именно для этой цели.

 57
Author: , 2012-07-10 17:16:11

Я использую

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

Для проверки, является ли значение числовым, положительным и целым

Http://php.net/is_numeric

Мне не очень нравится ctype_digit, так как он не так читаем, как "is_numeric", и на самом деле имеет меньше недостатков, когда вы действительно хотите проверить, что значение числовое.

 30
Author: Mathieu Dumoulin, 2016-01-27 14:30:47

filter_var()

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

if (filter_var($int, FILTER_VALIDATE_INT, $options) !== FALSE) {
 // you're good
}
 15
Author: John Conde, 2012-07-10 17:19:49
return ctype_digit($num) && (int) $num > 0
 6
Author: rdlowrey, 2012-07-11 07:35:48

Для 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
Author: MD. Shafayatul Haque, 2018-09-29 10:52:47