数字(0〜9)のみかどうかを調べる正しい方法

数字(0〜9)のみかどうかを調べるのに、is_numericやis_intは使ってはいけない。

is_numeric

この関数は『変数が数字または数値形式の文字列であるかを調べる』関数です。

数値形式の文字列とは

説明
プラス・マイナスの符号が付いてもよい+10 -10
任意の数の数字1234
小数部があってもよい123.456
指数部があってもよい123e10
16進表記でもよい0xFF

ということで、数字以外にも『 + - . e x A〜F 』が通ります。

is_int

この関数は『変数が整数型かどうかを調べる』関数です。
型を見ているので、文字列型として扱われている数字は通りません。

POSTによって送られる値は常に文字列型になります。
このため次のようなコードで数字を送っても、文字列型として判断されます。

$test=$_POST["test"];

if(is_int($test)){
  echo "整数";
}else{
  echo "整数ではない";
}

整数かどうかを調べる

if(strval($int)==strval(intval($int))){
  echo "整数";
}else{
  echo "整数ではない";
}

数字のみかどうかを調べる

if(preg_match("/^[0-9]+$/",$num)){
  echo "整数";
}else{
  echo "整数ではない";
}

その他の正規表現

関連記事

スポンサーリンク

SELinuxを無効にする方法

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る