POSTで受信した値を数字かどうか判定する場合、is_int関数は利用してはいけません。その理由はPOSTで送られた値は全て文字列型として扱われるためです。
そのため、以下のようなコードで判定したとしても、is_int関数はfalseを返してきます。
// num=1234をPOSTでsubmitしたと仮定 |
$num = $_POST['num']; |
// 数値判定 |
if (is_int($num)) { |
echo '整数'; |
} |
else { |
echo '文字列'; |
} |
このような場合は正規表現で判定するのがベストです。
// num=1234をPOSTでsubmitしたと仮定 |
$num = $_POST['num']; |
if(preg_match("/^[0-9]+$/",$num)){ |
echo '整数'; |
} |
else{ |
echo '文字列'; |
} |
数値の桁数まで指定する場合は、このようになります。(例は4桁の場合)
// num=1234をPOSTでsubmitしたと仮定 |
$num = $_POST['num']; |
if(preg_match("/^[0-9]{4}$/",$num)){ |
echo '整数'; |
} |
else{ |
echo '文字列'; |
} |
- 投稿タグ
- PHP




