フォーム入力値の数値チェックがうまくいかないとき

フォームに入力された値が数値かどうかチェックしたい場合、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>

○実行結果(チェック結果)

数値が入力されました

シェアする

  • このエントリーをはてなブックマークに追加

フォローする