檢查一個PHP字串是否僅由整數組成
P粉788765679
P粉788765679 2023-09-21 21:52:44
0
2
647

我正在編寫PHP程式碼來驗證使用者輸入的一些數據,其中之一是整數,我使用$_REQUEST["age"]來取得它,當我用gettype($ _REQUEST["age"]) == "integer"is_int($_REQUEST["age"])檢查這個值是否為整數時,兩者都會回傳false,但是當我使用is_numeric($_REQUEST["age"])時傳回true。我想要檢查參數的值是否為整數,我是否正確使用了前兩個函數,還是我漏掉了什麼?

謝謝

注意:我嘗試輸出gettype($_REQUEST["age"]),它給我回傳string

P粉788765679
P粉788765679

全部回覆(2)
P粉293550575

雷雷

P粉107772015

簡短版本:

#

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

#

詳細版本:

#

你的問題是,當你使用gettype時,$_REQUEST#回傳一個字串。即使字串在語義上是一個整數,例如16,它仍然是一個字串類型,而不是整數類型的變數。你從這兩個測試中得到不同的結果是因為它們測試的是不同的東西:

  • is_numeric測試一個字串是否包含一個"可選符號、任意數量的數字、可選的小數部分和可選的指數部分",根據PHP文檔。在你的情況下,字串只包含數字,所以測試傳回True
  • is_int測試變數的類型是否為整數 - 但它不會是整數,因為它是由$_REQUEST傳回的。

這就是為什麼is_numeric返回Trueis_int傳回False的原因:該字串只包含數字(所以是" numeric"),但技術上仍然是一個字串類型,而不是整數類型(所以不是"int")。當然,is_numeric對於整數測試來說是不夠的,因為如果字串有小數或使用科學計數法,它將傳回True,即是數字但不是整數。

為了測試$_REQUEST是否為整數,無論技術類型如何,你可以測試字串中的所有字元是否都是數字(因此整個字串是一個整數)。為此,你可以使用ctype_digit

ctype_digit($_REQUEST['age'])

這將對16傳回True,但對16.516e0不回傳True# - 這樣就可以將整數從非整數的數字中篩選出來。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板