在之前的文章《PHP函數(shù)運(yùn)用之:利用數(shù)組來輸出文件的擴(kuò)展名》中,我們介紹了兩種利用數(shù)組來獲取文件擴(kuò)展名的方法。這次我們繼續(xù)介紹獲取文件擴(kuò)展名的方法,看看利用字符串函數(shù)要怎么操作,感興趣的朋友可以學(xué)習(xí)了解一下~
首先我們回憶一下上文,從上文我們了解到一個(gè)完整的文件格式可分為三個(gè)部分:字符“.”之前的內(nèi)容、字符“.”、字符“.”之后的內(nèi)容。
這次我們還是要利用 字符“.
”,通過它來獲取文件擴(kuò)展名!下面我們會(huì)給大家介紹3種利用字符串函數(shù)獲取文件擴(kuò)展名的方法。
首先我們來看看第一種利用字符串函數(shù)獲取文件擴(kuò)展名的方法
<?php function getExtension($filename){ $ext = strrchr($filename,'.'); return $ext; } $filename="dir/upload/image.gif"; echo getExtension($filename); ?>
分析一下上面的關(guān)鍵代碼:
strrchr($filename,'.')
的意思為返回字符串$filename
中從字符“.
”開始到字符串結(jié)尾的所有字符。因此輸出結(jié)果為:
接下來我們看看第二種利用字符串函數(shù)獲取文件擴(kuò)展名的方法
<?php function getExtension($filename){ $pos = strrpos($filename, '.'); $ext = substr($filename, $pos); return $ext; } $filename="dir/upload/image.gif"; echo getExtension($filename); ?>
輸出結(jié)果為:
OK,分析一下上面的關(guān)鍵代碼:
-
首先我們使用
strrpos($filename, '.')
獲取到字符“.”在字符串$filename
中最后一次出現(xiàn)的位置$pos
,然后將$pos
作為substr()函數(shù)的第二個(gè)參數(shù)。 -
substr($filename, $pos)
會(huì)根據(jù)$pos
設(shè)置的位置開始截取字符串$filename
,返回從$pos
開始到字符串結(jié)尾的所有字符。因此會(huì)輸出“.gif
”。
如果想要獲取不包括字符“.”的擴(kuò)展名,即返回“gif
”,那么可以設(shè)置substr($filename, $pos+1)
,這樣輸出結(jié)果就為:
最后我們看看第三種利用字符串函數(shù)獲取文件擴(kuò)展名的方法
<?php function getExtension($filename){ $filename = strrev($filename); $ext = strstr($str,'.',true); return strrev($ext); } $filename="dir/upload/image.gif"; echo getExtension($filename); ?>
分析一下上面的關(guān)鍵代碼:
strstr($filename,'.',true)
可以獲取字符串$filename
中從開頭到 字符“.
” 第一次出現(xiàn)前的所有字符,即獲取 字符“.
”之前的內(nèi)容,輸出一下看看:
這和我們的預(yù)期不符合,此時(shí)我想了一下,既然是獲取 字符“.”之前的內(nèi)容,那么就把字符串反轉(zhuǎn)一下,讓表示擴(kuò)展名的那幾個(gè)字符在字符“.”之前不久行了!
因此,先使用strrev($filename)
來反轉(zhuǎn)字符串$filename
,再使用strstr($filename,'.',true)
來獲取 字符“.”之前的內(nèi)容,這次輸出看看結(jié)果:
可以了,獲取到顛倒的擴(kuò)展名了,調(diào)用strrev($filename)
再反轉(zhuǎn)一次字符串,這樣就獲取到正常的擴(kuò)展名了,看看輸出結(jié)果:
好了就說到這里了,有其他想知道的,可以點(diǎn)擊這個(gè)哦?!?→php視頻教程
最后給大家推薦閱讀一個(gè)經(jīng)典課程《PHP字符串處理(玉女心經(jīng)版)》,免費(fèi)的~快來學(xué)習(xí)??!