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