




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第PHP文件上傳利用的常見函數(shù)總結(jié)大全目錄前言1.deldot2.in_val4.strrchr5.strtolower6.strrpos7.str_ireplace8.strstr9.substr10.trim附PHP文件上傳處理參考資料總結(jié)
前言
收集了幾個(gè)在文件上傳利用中常見的函數(shù)。
對(duì)這些函數(shù)的深入理解應(yīng)該有助于文件上傳利用的順利進(jìn)行。
1.deldot
deldot函數(shù)為upload-lab中一個(gè)常見的函數(shù),它實(shí)際為一個(gè)自定義函數(shù),定義于common.php中,函數(shù)定義如下:
functiondeldot($s){
for($i=strlen($s)-1;$i$i--){
$c=substr($s,$i,1);
if($i==strlen($s)-1and$c!='.'){
return$s;
if($c!='.'){
returnsubstr($s,0,$i+1);
即從字符串的尾部開始,從后向前刪除點(diǎn).,直到該字符串的末尾字符不是.為止。
因此對(duì)于如下輸入,
echodeldot("helloworld")."\n";
echodeldot("helloworld.")."\n";
echodeldot("helloworld....")."\n";
echodeldot("hello.world.")."\n";
輸出為
helloworld
helloworld
helloworld
hello.world
2.in_array
in_array(mixed$needle,array$haystack,bool$strict=false):bool
其中第一個(gè)參數(shù)$needle為待搜索的值,$haystack為被搜索的數(shù)組,第三個(gè)參數(shù)決定是否進(jìn)行類型比較。
第三個(gè)類型默認(rèn)為false,即不考慮類型是否相同。
對(duì)于如下輸入:
if(in_array("AAA",$arr,false))echo1;
if(in_array("aaa",$arr,false))echo2;
if(in_array("AAA",$arr,true))echo3;
if(in_array("aaa",$arr,true))echo4;
輸出
13
3.intval
intval(mixed$value,int$base=10):int
intval函數(shù)用于獲取變量的整數(shù)值。
第一個(gè)參數(shù)$value為要獲取整數(shù)值的變量,可以為字符串、數(shù)值和數(shù)組。
第二個(gè)參數(shù)$base指定了轉(zhuǎn)換所使用的進(jìn)制,當(dāng)且僅當(dāng)要轉(zhuǎn)換的變量為字符串時(shí)有效。
當(dāng)?shù)诙€(gè)參數(shù)為0時(shí),會(huì)檢測(cè)變量的格式來決定使用的轉(zhuǎn)換進(jìn)制。
當(dāng)存在前置的0x或0X時(shí),使用16進(jìn)制。當(dāng)存在前置的0時(shí),使用8進(jìn)制。否則使用10進(jìn)制。
intval函數(shù)返回的數(shù)值為一個(gè)int類型的數(shù)值。當(dāng)轉(zhuǎn)換不成功時(shí),返回0。
特別要注意,使用該函數(shù)返回的值有上限。當(dāng)轉(zhuǎn)換的數(shù)值大于php的整數(shù)范圍時(shí),返回的結(jié)果為整型數(shù)值的取值上限。
echointval("111");
echo"\n";
echointval("111a");
echo"\n";
echointval("0x333");
echo"\n";
echointval("888",8);
echo"\n";
echointval("122",3);
echo"\n";
echointval("11111111111111111111111111111111111");
echo"\n";
echointval("2222222222222222222222222222222");
輸出為
111
111
0
0
17
9223372036854775807
9223372036854775807
4.strrchr
strrchr(string$haystack,mixed$needle):string
strrchr函數(shù)在字符串$haystack中查找$needle,并將最后一次查找到的$needle及其后面的字符串返回。如果沒有在該字符串中查找到$needle,則返回false。
注:
如果第二個(gè)參數(shù)不是不是單個(gè)字符,則只使用該字符串的第一個(gè)字符進(jìn)行查找匹配。如果第二個(gè)參數(shù)是一個(gè)數(shù)值,則將該數(shù)值轉(zhuǎn)換為對(duì)應(yīng)的ASCII碼進(jìn)行匹配。
$S="hhhahahaha2333";
echostrrchr($S,'h')."\n";
echostrrchr($S,'hwweraer')."\n";
echostrrchr($S,104)."\n";
if(strrchr($S,'k')==false)echo"false";
ha2333
ha2333
ha2333
false
5.strtolower
strtolower(string$string):string
將字符串$string中的各個(gè)英文字符轉(zhuǎn)換為小寫并返回。
$S="HaHaHaHa,Hello!!";
echostrtolower($S);
hahahaha,hello!!
6.strrpos
strrpos(string$haystack,string$needle,int$offset=0):int
返回字符$needle最后一次出現(xiàn)的位置。
在php4中,$needle只能為單個(gè)字符。如果$needle中存在多個(gè)字符,僅使用第一個(gè)字符做匹配。
和strrchr相似,如果$needle是一個(gè)數(shù)值,則使用該數(shù)值對(duì)應(yīng)的ASCII碼字符進(jìn)行匹配。
從php5開始,$needle可以為多個(gè)字符。
從php5開始,strrpos新增一個(gè)參數(shù)$offset,可以指定從$haystack的哪兒位置開始進(jìn)行匹配。
返回匹配的下標(biāo)位置,沒有匹配到時(shí)返回false。
注意:
因?yàn)榉祷刂悼赡転榱?,所以在判斷返回值是否為false的時(shí)候必須使用全等于符號(hào)===。該函數(shù)區(qū)分大小寫。與該函數(shù)相似的函數(shù)有:stripos:查找首個(gè)出現(xiàn)的位置,不區(qū)分大小寫。strpos:查找首個(gè)出現(xiàn)的位置,區(qū)分大小寫。strripos:查找最后一個(gè)出現(xiàn)的位置,不區(qū)分大小寫。即出現(xiàn)i則為不區(qū)分大小寫,出現(xiàn)rr則為查找最后一個(gè)。
$s="Phpphphpphpp";
echostrrpos($s,"php");
echostrrpos($s,"h");
echostrrpos($s,"P");
if(strrpos($s,"PHP")===false)echo"Noexist";
輸出:
890Noexist
注:測(cè)試使用的PHP版本為5.3.3。
在PHP4中結(jié)果可能不一樣。
7.str_ireplace
str_ireplace(
mixed$search,
mixed$replace,
mixed$subject,
int$count=
):mixed
str_ireplace函數(shù)用于對(duì)數(shù)組中的元素或字符串中的子串進(jìn)行替換。
第一個(gè)參數(shù)$search為需要替換的內(nèi)容(子串或數(shù)組),第二個(gè)參數(shù)$replace為替換成的內(nèi)容(字符串或數(shù)組),第三個(gè)參數(shù)$subject為被替換的字符串。
如果$search和$replace都為字符串,那么將會(huì)把$subject中匹配的子串$search替換為$replace。如果$search和$replace都為數(shù)組時(shí),將會(huì)進(jìn)行映射替換。如果$replace的值的個(gè)數(shù)少于search的個(gè)數(shù),多余的替換將使用空字符串來進(jìn)行。如果$search為數(shù)組而$replace為字符串,則對(duì)于$subject中出現(xiàn)的每一個(gè)search的元素,都會(huì)使用$replace做替換。
$count可以用于限定替換次數(shù)。
注:
替換從左到右進(jìn)行。該函數(shù)替換不區(qū)分字母大小寫。(另外一個(gè)函數(shù)str_replace區(qū)分大小寫)
php
echostr_ireplace("php","","hello.php")."\n";
echostr_ireplace("pHP","","hello.Php")."\n";
echostr_ireplace("php","","hello.phPHpp")."\n";
echostr_ireplace("php","p","hello.phphp")."\n";
echostr_ireplace("php",""."phpphpphpphpphp.php",3)."\n";
echostr_ireplace(array("php","html"),"","hello.php.html")."\n";
echostr_ireplace(array("php","html"),array("1","2"),"hello.php.html")."\n";
echostr_ireplace(array("php","html","css"),array("1","2"),"hello.php.css.html")."\n";
echostr_ireplace(array("php","html","css"),"1","hello.php.css.html")."\n";
foreach(str_ireplace(array("php","html","css"),array("1","2","3"),array("hello.html","hello.css","hello.html"))as$it){
echo"$it";
hello.
hello.
hello.Hpp
hello.php
3
hello
hello.1.2
hello.12
hello.1.1.1
hello.2hello.3hello.2
8.strstr
strstr(string$haystack,mixed$needle,bool$before_needle=false):string
查找字符串$needle在$haystack中首次出現(xiàn)的位置,并將$needle及其之后的字符串返回。
PHP5起新增第三個(gè)參數(shù)$before_needle,如果$before_needle取值為true,則返回$needle前面的部分。
$s="123phpphp.php";
echostrstr($s,"php")."\n";
echostrstr($s,"php",true)."\n";
phpphp.php
123
9.substr
substr(string$string,int$offset,int$length=null):string
返回字符串$string中的子串。
$offset指定子串首個(gè)字符在$string中的下標(biāo)位置,$length指定截取的子串長(zhǎng)度。
$length的取值:
$length為默認(rèn)取值時(shí),函數(shù)會(huì)將$offset至$length的字符串截取并返回。$length取正數(shù)時(shí),會(huì)從$offset開始將最多$length個(gè)字符截取返回出來。$length取0時(shí),返回一個(gè)空字符串。$length取負(fù)數(shù)時(shí),會(huì)將$offset至字符串$string倒數(shù)第$length前的字符返回出來。
$s="123456789";
echosubstr($s,1,3)."\n";
echosubstr($s,1,-1)."\n";
echosubstr($s,1)."\n";
echosubstr($s,1,0)."\n";
234
2345678
23456789
10.trim
trim(string$str,string$character_mask=\t\n\r\0\x0B):string
去除字符串$str的首尾的空白字符。
當(dāng)?shù)诙€(gè)參數(shù)保持默認(rèn)時(shí),去除的字符為:
空格\t制表符\n換行符\r回車符\0空字節(jié)符\x0B垂直制表符
$s="\n123456789\t\n123456789\r";
echotrim($s);
123456789
123456789
附PHP文件
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《經(jīng)濟(jì)法教程(第二版)》課件第五章 市場(chǎng)行為規(guī)制法律制度及實(shí)務(wù)
- 培訓(xùn)和技能鑒定機(jī)構(gòu)申請(qǐng)(登記)表
- 優(yōu)教導(dǎo)學(xué)案:20.1.1 平均數(shù)的意義 20.1.2 用計(jì)算器求平均數(shù)
- 云南省2025年1月普通高中學(xué)業(yè)水平合格性考試仿真模擬數(shù)學(xué)試卷02(解析版)
- 勞動(dòng)用工管理細(xì)則-
- 2011年四川大學(xué)華西藥學(xué)院碩士研究生招生目錄與參考教材(含專業(yè)碩士)
- 醫(yī)院財(cái)務(wù)工作制度及人員崗位職責(zé)
- Unit9SectionBreading課件-人教版英語八年級(jí)下冊(cè)
- 第一章從世界看中國章末復(fù)習(xí)課件-地理人教版八年級(jí)上冊(cè)
- 2025至2030年中國鑄造用型砂添加劑行業(yè)投資前景及策略咨詢報(bào)告
- 醫(yī)療設(shè)備行業(yè)微生物學(xué)技術(shù)培訓(xùn)
- 心肺復(fù)蘇后病人的護(hù)理查房
- 電力銷售公司可行性方案
- 美世-2023-2024年度高端醫(yī)療保險(xiǎn)行業(yè)福利市場(chǎng)實(shí)踐調(diào)研報(bào)告
- 履行法定義務(wù)糾正違法行為的模板
- 10以內(nèi)三個(gè)數(shù)加減法混合練習(xí)題
- 中國農(nóng)大學(xué)生電磁場(chǎng)仿真實(shí)驗(yàn)報(bào)告
- 辦公用房自查表
- 公司投標(biāo)書密封條模板
- 1999年高考語文試題及答案(全國卷)
- 幼兒園拼音《aoe》學(xué)習(xí)課件
評(píng)論
0/150
提交評(píng)論