Подтвердить что ты не робот

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;
}
4b9b3361

Ответ 1

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

Ответ 2

Я использую

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

чтобы проверить, является ли значение числовым, положительным и интегральным

http://php.net/is_numeric

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

Ответ 3

filter_var()

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

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

Ответ 4

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

Ответ 5

Для 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";
}
?>

Ответ 6

  Самый безопасный способ

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