PHPで整数を判定する

PHP

PHPで整数を判定する

ウェブアプリを作っていると、値が整数なのか確認するべきタイミングが多く出てきます。セキュリティー的にも変数に代入された値が整数か否か、確認するのは重要です。以下の関数を使い分けて、より強固な仕組みを構築してください。

is_numeric関数

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

<?php

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

<?php

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

<?php

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

正規表現で判定。

<?php

// 型ごとに変数に格納
$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をコピーしました