ナビ

パラメータ値が数字かどうか判別する

wrote :

http://allinthemind.biz/search.html?p=xxxx

たとえば、こんなURLがあって、pの値が数字かどうか判別したいとき。

事前段階のパラメータの有無は isset で確認したとして、パラメータ値が「0-9」のみかどうか判別する正規表現を書くんだろうな、と想定したけど、もっと他の手段があったので備忘録。

is_int

「与えられた変数の型が整数型かどうかを検査します。」とのこと。でもパラメータ値は文字列として判断されるから注意。そこで is_numeric。

is_numeric

「指定した変数が数値であるかどうかを調べます。」とのこと。おー、いいじゃん。なのですが、たとえば下記はすべて numeric です。

  • "42"
  • 1337
  • 0x539
  • 02471
  • 0b10100111001
  • 1337e0
  • 9.1

正規表現

個人的な結論としては、パラメータ値が「0-9」のみかどうか判別する場合は、やっぱり正規表現で対応する。

if (preg_match("/^[0-9]+$/", htmlspecialchars($_GET['p']))){
// 半角「0-9」のみです。
}

is_intを知れたらのは収穫でした。