PHPで整数を判定する
|ウェブアプリを作っていると、値が整数なのか確認するべきタイミングが多く出てくる。セキュリティー的にも変数に代入された値が整数か否か、確認するのは重要だ。
is_numeric関数
数字または数値形式の文字列か調べます。文字列型でも小数点でも数値ならOKと判定してくれます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
// 型ごとに変数に格納 $str = '255'; // 文字列(string)型 $int = 255; // 整数(int)型 $flt = 255.99; // 浮動小数点(float)型 // 文字列(string)型の判定 if (is_numeric($str)) { echo '文字列string OK'; } else { echo '文字列string NO'; } // 整数(int)型 if (is_numeric($int)) { echo '整数int OK'; } else { echo '整数int NO'; } // 小数(float)型 if (is_numeric($flt)) { echo '小数float OK'; } else { echo '小数float NO'; } |
is_int関数
整数(int)型か調べます。数値でも文字列型だとNO判定なので厳しい。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
// 型ごとに変数に格納 $str = '255'; // 文字列(string)型 $int = 255; // 整数(int)型 $flt = 255.99; // 浮動小数点(float)型 // 文字列(string)型の判定 if (is_int($str)) { echo '文字列string OK'; } else { echo '文字列string NO'; } // 整数(int)型の判定 if (is_int($int)) { echo '整数int OK'; } else { echo '整数int NO'; } // 小数(float)型の判定 if (is_int($flt)) { echo '小数float OK'; } else { echo '小数float NO'; } |
ctype_digit関数
文字列が数字かどうか調べます。文字列を判定する関数で、整数int型だとfalse
判定になるこることもあるため、文字列のみを指定するようにした方がベターかも。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
// 型ごとに変数に格納 $str = '255'; // 文字列(string)型 $int = 255; // 整数(int)型 $flt = 255.99; // 浮動小数点(float)型 // 文字列(string)型の判定 if (ctype_digit($str)) { echo '文字列string OK'; } else { echo '文字列string NO'; } // 整数(int)型の判定 if (ctype_digit($int)) { echo '整数int OK'; } else { echo '整数int NO'; } // 小数(float)型の判定 if (ctype_digit($flt)) { echo '小数float OK'; } else { echo '小数float NO'; } |
preg_match関数
正規表現で判定。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
// 型ごとに変数に格納 $str = '255'; // 文字列(string)型 $int = 255; // 整数(int)型 $flt = 255.99; // 浮動小数点(float)型 // 文字列(string)型の判定 if (preg_match('/^[0-9]+$/', $str)) { echo '文字列string OK'; } else { echo '文字列string NO'; } // 整数(int)型の判定 if (preg_match('/^[0-9]+$/', $int)) { echo '整数int OK'; } else { echo '整数int NO'; } // 小数(float)型の判定 if (preg_match('/^[0-9]+$/', $slt)) { echo '小数float OK'; } else { echo '小数float NO'; } |