PHP文字列が整数のみで構成されているかどうかを確認する
P粉788765679
P粉788765679 2023-09-21 21:52:44
0
2
649

ユーザーが入力したデータの 1 つが整数であることを検証するための PHP コードを作成しています。 を使用する場合は、$_REQUEST["age"] を使用してデータを取得します。 gettype($ _REQUEST["age"]) == "integer"is_int($_REQUEST["age"]) は両方とも、この値が整数かどうかをチェックするときに false を返しますが、 use is_numeric($_REQUEST["age"]) の場合に true を返します。パラメータの値が整数であるかどうか、最初の 2 つの関数を正しく使用しているか、それとも何かが不足しているかを確認したいと考えています。

###ありがとう###

注:

gettype($_REQUEST["age"])

を出力しようとしましたが、string が返されました。

P粉788765679
P粉788765679

全員に返信(2)
P粉293550575

リーリー

いいねを押す +0
P粉107772015

######短縮版: ######

使用 ctype_digit($_REQUEST['age'])

詳細バージョン:

あなたの問題は、gettype を使用すると、

$_REQUEST

string を返すことです。文字列が意味的に整数 (16 など) であっても、それは依然として文字列型であり、整数型変数ではありません。これら 2 つのテストで異なる結果が得られる理由は、テストする内容が異なるためです。 is_numeric

    PHP ドキュメント
  • に従って、文字列に「オプションの記号、任意の桁数、オプションの小数部分、およびオプションの指数部分」が含まれているかどうかをテストします。あなたの場合、文字列には数字のみが含まれているため、テストは True を返します。 is_int 変数の型が整数かどうかをテストします。ただし、
  • $_REQUEST
  • によって返されるため、整数にはなりません。 これが、is_numeric
True

を返し、is_intFalse を返す理由です。文字列には数字のみが含まれます (つまり、「数値」)。ただし、技術的には依然として文字列型であり、整数型ではありません (つまり、「int」ではありません)。もちろん、is_numeric は整数のテストには十分ではありません。文字列に小数が含まれている場合、または科学表記法が使用されている場合は、整数ではなく数値である True が返されるからです。 $_REQUEST が整数であるかどうかをテストするには、技術的な種類に関係なく、文字列内のすべての文字が数字である (つまり、文字列全体が整数である) かどうかをテストできます。これには、

ctype_digit

: を使用できます。 リーリー これは、16 に対して

True

を返しますが、16.5 または 16e0 に対しては True を返しません - 次のように整数以外の数値から整数をフィルタリングできます。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート