本文目錄一覽:
PHP 沒有後綴名的文件怎麼獲取後綴
我給你思路吧
首先沒有後綴,那隻能通過文件頭來判斷了
function getFileType($file){
if(!empty($file)){
//打開文件
$filehead = fopen($file,’r’);
//讀取文件2位元組
$bin = fread($filehead, 2);
fclose($filehead);
//二進位字元串對數據進行解包
$data = unpack(‘C2chars’, $bin);
$type_code = intval($data[‘chars1’].$data[‘chars2’]);
switch ($type_code) {
case 7790:
$fileType = ‘exe’;
break;
case 7784:
$fileType = ‘midi’;
break;
case 8075:
$fileType = ‘zip’;
break;
case 8297:
$fileType = ‘rar’;
break;
case 255216:
$fileType = ‘jpg’;
break;
case 7173:
$fileType = ‘gif’;
break;
case 6677:
$fileType = ‘bmp’;
break;
case 13780:
$fileType = ‘png’;
break;
default:
$fileType = ‘unknown’;
break;
}
return $fileType;
}
–
php截取文件擴展名
解決樓主的問題的方法就是,分開寫代碼,即:
$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
【以上文字現場版純手敲,2012-2-25
10:41,謝謝】
php有哪些常用的後綴
php3,pht,phtml,phps等後綴如果伺服器是apach的話配置文件是可以添加這些php別名進行解析的
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/284844.html