3 回答

TA貢獻1895條經驗 獲得超3個贊
不用這么麻煩,先用這個函數basename()獲得文件的文件名.
然后用$type = explode(".",$name); $type = @$type[1]; 這樣就獲得了后綴了.

TA貢獻1851條經驗 獲得超5個贊
解決你的問題的方法就是,分開寫代碼,即:
$filearr = split(".",$filename);
$filetype = end($filearr);
split 函數用來分割字符串的時候,基本等同于函數 preg_grep,分割表達式可以是一個正則表達式,也可以是一個普通字符串,所以本身的執行效率很低,這一點你要記得……
所以,實現你現在的這個需求的話,最好用explode函數,使用普通字符作為分割表達式……
但是也的確如樓上所說,split 函數(PHP里)已經棄用,你可以使用 preg_match、preg_match_all 、preg_grep 等使用正則表達式作為分割的函數來替代。
就整個你的需求而言,你的思路還不很好,當一個文件名是【a.b.c.d.e.f.g.php】的時候,程序要浪費多余的資源來分割其實你不用的a、b、c……,
所以要簡單滿足你取后綴名的需求的代碼應該是:
$filetype=substr(strrchr($filename,'.'),1);
此外還有:$path_info = pathinfo($filename); $filetype = $path_info['extension']; 其實不是很推薦。
下面比較一下它們各自的執行效率:
設文件名是:aaa.bb.php、循環執行10000次;執行10次取平均值:
split + end :0.067644s
explode + end :0.016251s
pathinfo + ['extension'] :0.018983s
strrchr + substr :0.008611s
- 3 回答
- 0 關注
- 446 瀏覽
添加回答
舉報