2012-08-05 67 views
0

我做了一個函數,到目前爲止似乎很擅長獲取文件擴展名,無論文件名是多麼奇怪。我在網上遇到的每種方法似乎都喜歡使用爆炸。以獲得擴展名,但如果文件名中有多個.s怎麼辦?好的可靠函數來獲取文件擴展名

這裏是我的功能:

$fileName = 'my.reallyAwk-ward..file--name.JPEG' ; 
echo getExtension($fileName) ; 

function getExtension($fileName) 
{ 
    $ext = explode('.', strrev($fileName), 2) ; 
    $ext = strtolower(strrev($ext[0])) ; 
    return $ext ; 
} 

上午我重塑車輪或者可以這樣做更有效率?

+0

http://php.net/pathinfo – zerkms 2012-08-05 11:49:20

+0

它看起來不錯;你也可以檢查是否有多個擴展,並在這種情況下返回一個數組,儘管這看起來並不是你想要的。但是,諸如'name.php.inc'之類的文件確實具有兩個擴展名。 – 2012-08-05 11:51:08

+0

僅供參考'explode()'和'end()'也可以做你想做的事情,但'pathinfo'可能包含更多有用的信息。 @AndreiBârsan沒有文件不能有多個擴展名。名爲'name.php.inc'的文件擴展名爲'.inc',文件名爲'name.php'。 – PeeHaa 2012-08-05 12:02:49

回答

7
<?php 
$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 
?> 

http://php.net/manual/en/function.pathinfo.php

+0

只需指定PATHINFO_EXTENSION就行。 pathinfo也比Everts和我的功能快一點。 – imperium2335 2012-08-05 14:57:14

0

我覺得這是比較清爽,乾淨:

$filename = 'myfile.jpg'; 
$extension = substr($filename, strrpos($filename,'.') +1) 

爆炸創建新的數組,一般還有很多更多的 '工作'。