兩種判斷方法:1、用is_numeric()和strpos()判斷字串是否為不包含小數點的數字字串,語法「!is_numeric($str)||strpos($str," .")!==false”,返回false則是整數字串,反之不是。 2.用intval()將字串轉為整數值,用「==」運算子判斷整數值是否和原字串相等,語法「intval($str)==$str」。
本教學操作環境:windows7系統、PHP8版、DELL G3電腦
php判斷一個字串是否為整數字串
方法1:用is_numeric()函數和strpos()函數進行判斷
只需判斷字串是否為不包含小數點的數字字串即可
範例:檢查字串「a678」、「3.14」、「67854」是否為整數字串。
<?php header("Content-type:text/html;charset=utf-8"); function f($str){ if(!is_numeric($str)||strpos($str,".")!==false){ echo "$str 字符串不是整数字符串<br><br>"; }else{ echo "$str 字符串是整数字符串<br><br>"; } } f("a678"); f("3.14"); f("67854"); ?>
分析:
is_numeric()函數可以判斷是否為數字或數字字串,但無法檢查出該字符字串是否為整數,即此時字串可能是整數和浮點數;
這樣就需要使用strpos()來判斷,利用該函數檢查數字字串中是否含有小數點,即可排除浮點數。
方法2:使用intval()函數和「==」運算子來判斷說明:
#intval() 函數
##intval() 函數用於取得變數的整數值。 intval() 函數透過使用指定的進位 base 轉換(預設為十進位),傳回變數 var 的 integer 數值。 intval() 不能用於 object,否則會產生 E_NOTICE 錯誤並傳回 1。參數說明:int intval ( mixed $var [, int $base = 10 ] )登入後複製如果base 是0,透過偵測var 的格式來決定使用的進位:
- $var:要轉換成 integer 的數量值。
- $base:轉換所使用的進位。
##如果字串包含了"0x" (或"0X") 的前綴,使用16 進位(hex);否則,
- #如果字串以"0" 開始,使用8 進位(octal);否則,
- 將使用10 進位(decimal)。
- 傳回值
成功時傳回 var 的 integer 值,失敗時傳回 0。空的 array 回傳 0,非空的 array 回傳 1。
- 最大的值取決於作業系統。 32 位元系統最大帶符號的 integer 範圍是 -2147483648 到 2147483647。舉例,在這樣的系統上, intval('1000000000000') 會傳回 2147483647。64 位元系統上,最大帶符號的 integer 值為 9223372036854775807。
- 字串有可能傳回 0,雖然取決於字串最左邊的字元。
只需要將字串轉為整數,然後判斷該整數和之前的字串是否相等即可。
範例:
<?php header("Content-type:text/html;charset=utf-8"); function f($str){ $result = intval($str); if($result==$str){ echo "$str 字符串是整数字符串<br><br>"; } else{ echo "$str 字符串不是整数字符串<br><br>" ; } } f("678"); f("678d"); f("a678"); f("3.14"); ?>
分析:
is_numeric()函數is_numeric() 函數用於偵測變數是否為數字或數字字串。
$var:要偵測的變數。bool is_numeric ( mixed $var )登入後複製如果指定的變數是數字和數字字串則回傳TRUE,否則回傳FALSE,注意浮點型回傳1 ,即TRUE。
- 回傳值
- strpos()函數
strpos()函數尋找字串在另一字串中第一次出現的位置(區分大小寫)。
$string :必要。規定被搜尋的字串。strpos($string,$find,$start)登入後複製傳回字串在另一個字串中第一次出現的位置,如果沒有找到字串則傳回FALSE。註: 字串位置從 0 開始,不是從 1 開始。
- $find:必要。規定要找的字元。
- $start: 可選。規定開始搜尋的位置。
- 傳回值:
PHP影片教學》
- 推薦學習:《
以上是php怎麼判斷是否為整數字串的詳細內容。更多資訊請關注PHP中文網其他相關文章!