2011-05-17 72 views
2

誰能幫我改這個腳本使用使preg_split(推薦替代由php.net),而不是它不再使用分裂。該函數獲取變量$ filename中所有上傳文件的文件擴展名。PHP函數來獲取文件的擴展名

function findExtension ($filename) 
{ 
    $filename = strtolower($filename) ; 
    $exts = split("[/\\.]", $filename) ; 
$n = count($exts)-1; 
$exts = $exts[$n]; 
return $exts; 
} 

回答

15

你應該只使用pathinfo代替:

$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php'); 

echo $path_parts['dirname'], "\n"; 
echo $path_parts['basename'], "\n"; 
echo $path_parts['extension'], "\n"; 
echo $path_parts['filename'], "\n"; // since PHP 5.2.0 
1

如果文件擴展名是唯一的部分你想:

function GetExt($filename) { 
    return (($pos = strrpos($filename, '.')) !== false ? substr($filename, $pos+1) : ''); 
} 
2

相反split,你可以只使用explode。因爲您只是想要擴展名,所以沒有理由按/進行拆分,只需按點分割並獲取array_pop的最後一個元素即可。

+0

似乎'爆炸'可能是文件擴展名搜索標準。謝謝 – imbayago 2011-05-18 08:45:14

2

我喜歡function David Walsh posted,使用了「strrchr」功能來獲得最後發生「」在一個字符串中。


function get_file_extension($file_name) 
{ 
    return substr(strrchr($file_name,'.'),1); 
} 
0

也許東西沿着這些路線?

$string = "some/path_to_a_file.txt"; 
$pattern = preg_split('/\./', $string, -1, PREG_SPLIT_OFFSET_CAPTURE); 
0

我的代碼會給文件擴展名,刪除查詢字符串。 pathinfo也返回字符串擴展名。所以請使用我的代碼,如果你想知道確切的文件名:

$filename = 'http://doamin/js.jquery.min.js?v1.1.11';  
preg_replace('/\?.*/', '', substr(strrchr($filename, '.'), 1)); 

// output: js