PHP is_numeric()函數(shù)用法詳解
is_numeric() 可以檢測「變量」是否為「數(shù)字」或數(shù)字字符串。
語法
bool is_numeric( $var )
參數(shù)
- $var :需要檢測的變量
返回值
布爾類型
- 返回 true :整形、浮點型、整形字符串、浮點型字符串
- 其他 false
一、基本使用
「整形」、「浮點型」以及他們的字符串形式,都返回 true 。
實例:
var_dump(is_numeric(1)); var_dump(is_numeric(1.1)); var_dump(is_numeric('1')); var_dump(is_numeric('1.1'));
輸出:
bool(true)
bool(true)
bool(true)
bool(true)
二、16進制繞過
is_numeric() 會對「16進制」(0x開頭)返回 true 。數(shù)值型和字符型都可以。
實例:
var_dump(is_numeric(0x7e)); var_dump(is_numeric('0x7e'));
輸出:
bool(true)
bool(true)
繞過思路:把 '1 or 1'
這類payload轉(zhuǎn)成16進制,再傳給 is_numeric() ,實現(xiàn)繞過。
三、科學(xué)計數(shù)法繞過
is_numeric() 會對「科學(xué)計數(shù)法」(0e開頭)返回 true 。數(shù)值型和字符型都可以。
并且,0e開頭的值,強制轉(zhuǎn)換成int類型后,都是1。
實例:
var_dump(is_numeric(0e123)); var_dump(is_numeric('0e123')); echo (int)is_numeric(0e123).PHP_EOL; echo (int)is_numeric(0e9999).PHP_EOL; echo (int)is_numeric('0e123');
輸出:
bool(true)
bool(true)
1
1
1
繞過思路:遇到 (int)is_numeric($_GET['a'])
這類情況時,可以使用傳入 0exxx
格式的參數(shù)來繞過。
四、字符串
「數(shù)字」和「字母」組合的字符串,無論是否以數(shù)字開頭,都返回 false。
實例:
var_dump(is_numeric('1a')); var_dump(is_numeric('a1'));
輸出:
bool(false)
bool(false)
五、is_int()和is_numeric()的區(qū)別
is_int() 和 is_numeric() 都可以 “判斷變量是否為數(shù)字”。
但 is_int() 必須是「整形」才返回 true ,其他類型都返回 false;
而 is_numeric() 對「浮點型」 和「數(shù)值型字符串」也返回 true 。
實例:
var_dump(is_numeric(1.1)); var_dump(is_int(1.1)); var_dump(is_numeric('1')); var_dump(is_int('1'));
輸出:
bool(true)
bool(false)
bool(true)
bool(false)
六、type_digit()和is_numeric()的區(qū)別
type_digit() 和 is_numeric() 都可以 “判斷變量是否為數(shù)字”。
但 type_digit() 只有在字符串中全是「數(shù)字」才會返回 true ,整型、浮點型、甚至包含正負符號的值都返回 false。
而 is_numeric() 對整型、浮點型、以及包含正負符號的值都返回 true 。
實例:
var_dump(is_numeric('1')); var_dump(ctype_digit('1')); var_dump(is_numeric(1)); var_dump(ctype_digit(1)); var_dump(is_numeric('1.1')); var_dump(ctype_digit('1.1')); var_dump(is_numeric('-1')); var_dump(ctype_digit('-1')); var_dump(is_numeric('+1')); var_dump(ctype_digit('+1'));
輸出:
bool(true)
bool(true)
bool(true)
bool(false)
bool(true)
bool(false)
bool(true)
bool(false)
bool(true)
bool(false)
到此這篇關(guān)于PHP is_numeric()函數(shù)用法詳解的文章就介紹到這了,更多相關(guān)PHP is_numeric()函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
php實現(xiàn)替換手機號中間數(shù)字為*號及隱藏IP最后幾位的方法
這篇文章主要介紹了php實現(xiàn)替換手機號中間數(shù)字為*號及隱藏IP最后幾位的方法,涉及php字符串替換與正則操作的相關(guān)技巧,需要的朋友可以參考下2016-11-11