77

入力が数値かどうかを確認する最良の方法は何ですか?

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

6 に答える 6

76

ctype_digitこの目的のために正確に構築されました。

于 2012-07-10T17:16:11.107 に答える
45

私が使う

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

値が数値、正、整数であるかどうかを検証します

http://php.net/is_numeric

「is_numeric」ほど読みにくく、値が数値であることを実際に検証したい場合は実際には欠陥が少ないため、ctype_digitはあまり好きではありません。

于 2012-07-10T17:18:00.620 に答える
20

filter_var()

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

if (filter_var($int, FILTER_VALIDATE_INT, $options) !== FALSE) {
 // you're good
}
于 2012-07-10T17:19:49.087 に答える
11

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";
}
?>
于 2017-01-03T13:02:12.013 に答える
10
return ctype_digit($num) && (int) $num > 0
于 2012-07-10T17:17:06.077 に答える