最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解PHP intval()函數(shù)的實(shí)例用法

 更新時(shí)間:2023年07月27日 11:54:21   作者:士別三日wyx  
本篇文章主要給大家介紹php intval函數(shù)怎么用,那么intval()函數(shù)是PHP中的內(nèi)置函數(shù),它返回變量的整數(shù)值,文中通過(guò)代碼詳細(xì)介紹了PHP intval()函數(shù)的用法,需要的朋友可以參考下

intval() 函數(shù)可以獲取變量的「整數(shù)值」。常用于強(qiáng)制類(lèi)型轉(zhuǎn)換。

語(yǔ)法

int intval( $var, $base )

參數(shù)

  • $var:需要轉(zhuǎn)換成 integer 的「變量」
  • $base:轉(zhuǎn)換所使用的「進(jìn)制」

返回值

返回值為 integer 類(lèi)型,可能是 0 或 1 或 其他integer 值。

  • 0:失敗 或 空array 返回 0
  • 1:非空array 返回 1
  • 其他integer值:成功時(shí) 返回 $var 的 integer 值。

返回值的「最大值」取決于系統(tǒng)

  • 32 位系統(tǒng)(-2147483648 到 2147483647)
  • 64 位系統(tǒng)(-9223372036854775808到9223372036854775807)

一、進(jìn)制自動(dòng)轉(zhuǎn)換

第二個(gè)參數(shù) $base 允許為空。

當(dāng) base 為空時(shí),默認(rèn)值是 0,會(huì)根據(jù) $var 的格式來(lái)調(diào)整轉(zhuǎn)換的進(jìn)制。

  • 如果 $var 以 0 開(kāi)頭,就使用 8進(jìn)制
  • 如果 $var 以0x開(kāi)頭,就使用 16進(jìn)制
  • 否則,就使用 10進(jìn)制

實(shí)例:

# 10的 8進(jìn)制是12
var_dump(intval(012));
# 10的 16進(jìn)制是A
var_dump(intval(0xA));
# 10的 10進(jìn)制是10
var_dump(intval(10));

輸出:

int(10)
int(10)
int(10)

繞過(guò)思路:當(dāng)某個(gè)數(shù)字被過(guò)濾時(shí),可以使用它的 8進(jìn)制/16進(jìn)制來(lái)繞過(guò)。

二、轉(zhuǎn)換數(shù)組

intval() 轉(zhuǎn)換數(shù)組類(lèi)型時(shí),不關(guān)心數(shù)組中的內(nèi)容,只判斷數(shù)組中有沒(méi)有元素。

  • 「空數(shù)組」返回 0
  • 「非空數(shù)組」返回 1

實(shí)例:

var_dump(intval(array()));
var_dump(intval(array(3,2)));

輸出:

int(0)
int(1)

如果傳入的 $var是數(shù)組中的某個(gè)值時(shí),則當(dāng)做變量來(lái)轉(zhuǎn)換,而不是當(dāng)做數(shù)組類(lèi)型。

實(shí)例:

$arr1 = array(8,6);
var_dump(intval($arr1[0]));

輸出:

int(8)

繞過(guò)思路:對(duì)于弱比較(a==b),可以給a、b兩個(gè)參數(shù)傳入空數(shù)組,使弱比較為true。

三、轉(zhuǎn)換小數(shù)

intval() 轉(zhuǎn)換小數(shù)類(lèi)型時(shí),只返回個(gè)位數(shù),不遵循四舍五入的原則。

實(shí)例:

var_dump(intval(12));
var_dump(intval(1.2));
var_dump(intval(1.9));

輸出:

int(12)
int(1)
int(1)

繞過(guò)思路:當(dāng)某個(gè)數(shù)字被過(guò)濾時(shí),可以給它增加小數(shù)位來(lái)繞過(guò)。

四、轉(zhuǎn)換字符串

intval() 轉(zhuǎn)換字符串類(lèi)型時(shí),會(huì)判斷字符串是否以數(shù)字開(kāi)頭

  • 如果以數(shù)字開(kāi)頭,就返回1個(gè)或多個(gè)連續(xù)的數(shù)字
  • 如果以字母開(kāi)頭,就返回0

單雙引號(hào)對(duì)轉(zhuǎn)換結(jié)果沒(méi)有影響,并且 0 或 0x 開(kāi)頭也只會(huì)當(dāng)做普通字符串處理。

實(shí)例:

var_dump(intval('12abc'));
var_dump(intval("12abc"));
var_dump(intval('abc123'));
var_dump(intval('1a2b3c'));
var_dump(intval('0101'));
var_dump(intval("0x2b"));

輸出:

int(12)
int(12)
int(0)
int(1)
int(101)
int(0)

五、取反~

intval() 函數(shù)支持一些特殊符號(hào)的,比如~取反。

實(shí)例:

var_dump(intval(~10));
var_dump(intval(~~10));

輸出:

int(-11)
int(10)

繞過(guò)思路:當(dāng)某個(gè)數(shù)字被過(guò)濾時(shí),可以?xún)纱稳》磥?lái)繞過(guò)。

六、算數(shù)運(yùn)算符

intval() 函數(shù)支持算數(shù)運(yùn)算符,如果傳入的 $var參數(shù)包含算數(shù)運(yùn)算符,會(huì)先運(yùn)算,再對(duì)運(yùn)算結(jié)果進(jìn)行轉(zhuǎn)換。

實(shí)例:

var_dump(intval(5*5));
var_dump(intval(5+5));
var_dump(intval(05+5));

輸出:

int(25)
int(10)
int(10)

繞過(guò)思路:當(dāng)某個(gè)數(shù)字被過(guò)濾時(shí),可以使用算數(shù)運(yùn)算符繞過(guò)。

七、浮點(diǎn)數(shù)精度缺失問(wèn)題

由于PHP中的浮點(diǎn)數(shù)是「弱類(lèi)型」,存在「精度丟失」的問(wèn)題,在轉(zhuǎn)換時(shí)可能會(huì)出現(xiàn)意料之外的情況。

比如下面這個(gè)案例,第一個(gè)輸出34正常,第二個(gè)以為會(huì)輸出58,結(jié)果輸出了57。

實(shí)例:

var_dump(intval(0.34*100.0));
var_dump(intval(0.58*100.0));

輸出:

int(34)
int(57)

八、intval()繞過(guò)思路

最后匯總一下intval()函數(shù)漏洞的繞過(guò)思路:

1)當(dāng)某個(gè)數(shù)字被過(guò)濾時(shí),可以使用它的 8進(jìn)制/16進(jìn)制來(lái)繞過(guò);比如過(guò)濾10,就用012(八進(jìn)制)或0xA(十六進(jìn)制)。
2)對(duì)于弱比較(a==b),可以給a、b兩個(gè)參數(shù)傳入空數(shù)組,使弱比較為true。
3)當(dāng)某個(gè)數(shù)字被過(guò)濾時(shí),可以給它增加小數(shù)位來(lái)繞過(guò);比如過(guò)濾3,就用3.1。
4)當(dāng)某個(gè)數(shù)字被過(guò)濾時(shí),可以給它拼接字符串來(lái)繞過(guò);比如過(guò)濾3,就用3ab。(GET請(qǐng)求的參數(shù)會(huì)自動(dòng)拼接單引號(hào))
5)當(dāng)某個(gè)數(shù)字被過(guò)濾時(shí),可以?xún)纱稳》磥?lái)繞過(guò);比如過(guò)濾10,就用~~10。
6)當(dāng)某個(gè)數(shù)字被過(guò)濾時(shí),可以使用算數(shù)運(yùn)算符繞過(guò);比如過(guò)濾10,就用 5+5 或 2*5。

以上就是詳解PHP intval()函數(shù)的實(shí)例用法的詳細(xì)內(nèi)容,更多關(guān)于PHP intval()函數(shù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

通海县| 荥阳市| 浙江省| 宜宾市| 汤阴县| 金阳县| 安陆市| 桐柏县| 长乐市| 绥棱县| 普洱| 渭源县| 扶绥县| 兴国县| 安达市| 麻阳| 慈利县| 马鞍山市| 隆德县| 京山县| 双牌县| 泰宁县| 大关县| 张掖市| 湘潭市| 德钦县| 乌拉特中旗| 山阳县| 永济市| 抚远县| 托克托县| 新民市| 睢宁县| 山东省| 和田市| 安义县| 三明市| 涞源县| 曲水县| 瑞丽市| 邵阳市|