PHPで整数を判定する

ウェブアプリを作っていると、値が整数なのか確認するべきタイミングが多く出てくる。セキュリティー的にも変数に代入された値が整数か否か、確認するのは重要だ。

is_numeric関数

数字または数値形式の文字列か調べます。文字列型でも小数点でも数値ならOKと判定してくれます。

// 型ごとに変数に格納
$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判定なので厳しい。

// 型ごとに変数に格納
$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判定になるこることもあるため、文字列のみを指定するようにした方がベターかも。

// 型ごとに変数に格納
$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関数

正規表現で判定。

// 型ごとに変数に格納
$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';
}

 

コメント

タイトルとURLをコピーしました