フォームに入力された値が数値かどうかチェックしたい場合、is_int関数でチェックするとうまくいきません。次の例では、テキストボックスに10などの数値を入力しても、「数値が入力されていません」と表示されます。
<html> <body> <?php if (!is_int(@$_POST["num"])) { echo "数値が入力されていません"; } else { echo "数値が入力されました"; } ?> <form method="POST" action="<?php echo $_SERVER["SCRIPT_NAME"]?>"> <input type="text" value="10" name="num"> <input type="submit" value="送信"> </form> </body> </html>
この原因は、フォームから送信された値は「文字列」だからです。フォームから送信された「10」は見た目は数値ですが形式は文字列の「数値文字列」というタイプの値になります。
上で紹介した数値チェックを機能させるには、数値文字列も含めて数値だと判断するis_numeric関数を使う方法があります。
<html> <body> <?php if (!is_numeric(@$_POST["num"])) { echo "数値が入力されていません"; } else { echo "数値が入力されました"; } ?> <form method="POST" action="<?php echo $_SERVER["SCRIPT_NAME"]?>"> <input type="text" value="10" name="num"> <input type="submit" value="送信"> </form> </body> </html>
○実行結果(チェック結果)
数値が入力されました