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;
}
+65
источник поделиться
6 ответов

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

+66
источник

Я использую

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

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

http://php.net/is_numeric

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

+38
источник
другие ответы

Связанные вопросы


Похожие вопросы

filter_var()

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

if (filter_var($int, FILTER_VALIDATE_INT, $options) !== FALSE) {
 // you're good
}
+18
источник
return ctype_digit($num) && (int) $num > 0
+8
источник

Для 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;
}
+1
источник

Посмотрите другие вопросы по меткам или Задайте вопрос