phpでシステムを実装する際に数値かどうかをチェックすることはよくあると思います。
phpでは数値文字列かを判定するis_numeric関数がありますが、is_numeric関数は小数点や16進数なども数値として判定します。
完全に数値だけを判定したい場合に下記の正規表現を使うことで数値かどうか判定することができます。
正規表現を使うことによって判定する内容を編集することができるので応用が効くと思います。
■ is_numeric()関数
変数または指定した値が数値、数値文字列かどうか判定します。
数値の場合はtrueを返し、数値ではない場合はfalseを返します。
■ 使用方法(is_numeric)
・数値の場合
$num = 000; if (is_numeric($num)) { echo '数値です'; } else { echo '数値ではありません'; }
数値です
・小数点の場合
$num = 100.1; if (is_numeric($num)) { echo '数値です'; } else { echo '数値ではありません'; }
数値です
・数値文字列の場合
$num = '100'; if (is_numeric($num)) { echo '数値です'; } else { echo '数値ではありません'; }
数値です
・「+」、「-」付きの場合
$num = '-100'; if (is_numeric($num)) { echo '数値です'; } else { echo '数値ではありません'; }
数値です
・16進数の場合
$num = '0xFF'; if (is_numeric($num)) { echo '数値です'; } else { echo '数値ではありません'; }
数値です
・上記以外の場合(数値ではない場合)
$num = 'aaa'; if (is_numeric($num)) { echo '数値です'; } else { echo '数値ではありません'; }
数値ではありません
■ 使用方法(正規表現)
正規表現を使用し、0~9の連続した文字のみtrueを返します。
preg_match("/^[0-9]+$/", '判定したい文字列')
・数値の場合
$num = 000; if (preg_match("/^[0-9]+$/", $num)) { echo '数値です'; } else { echo '数値ではありません'; }
数値です
・小数点の場合
$num = 100.1; if (preg_match("/^[0-9]+$/", $num)) { echo '数値です'; } else { echo '数値ではありません'; }
数値ではありません
・数値文字列の場合
$num = '100'; if (preg_match("/^[0-9]+$/", $num)) { echo '数値です'; } else { echo '数値ではありません'; }
数値です
・「+」、「-」付きの場合
$num = -100; if (preg_match("/^[0-9]+$/", $num)) { echo '数値です'; } else { echo '数値ではありません'; }
数値ではありません
・16進数の場合
$num = '0xFF'; if (preg_match("/^[0-9]+$/", $num)) { echo '数値です'; } else { echo '数値ではありません'; }
数値ではありません
・上記以外の場合(数値ではない場合)
$num = 'aaa'; if (preg_match("/^[0-9]+$/", $num)) { echo '数値です'; } else { echo '数値ではありません'; }
数値ではありません