2011-09-27 120 views
33

我有一個上傳腳本,我需要檢查文件擴展名,然後根據該文件擴展名運行單獨的函數。有人知道我應該使用什麼代碼嗎?PHP檢查文件擴展名

if (FILE EXTENSION == ???) 
{ 
FUNCTION1 
} 
else if 
{ 
FUNCTION2 
} 
+0

可能重複[如何在PHP中提取文件擴展名?](http://stackoverflow.com/questions/173868/how-to-extract-a-file-extension-in-php) –

回答

78

pathinfo是你在找什麼

PHP.net

$file_parts = pathinfo($filename); 

switch($file_parts['extension']) 
{ 
    case "jpg": 
    break; 

    case "exe": 
    break; 

    case "": // Handle file extension for files ending in '.' 
    case NULL: // Handle no file extension 
    break; 
} 
+1

什麼是沒有擴展的情況? case NULL?案件 」」? – swl1020

+2

已更新。空字符串'「」'用於文件,然後以'.'結尾。 NULL表示沒有文件擴展名。您可以打破案例陳述,但是對於這個例子,我只是將它們組合在一起。 – Brombomb

14
$info = pathinfo($pathtofile); 
if ($info["extension"] == "jpg") { .... } 
+0

我在我的網站上使用了這段代碼。但是,當它與'echo「$ info」'一起執行時,它總是返回值Array。爲什麼是這樣? –

+0

@ user2910074這個問題是舊的,我會讓你看到你的代碼,以提供任何幫助。我建議你在SO –

-1
$original_str="this . is . to . find"; 
    echo "<br/> Position: ". $pos=strrpos($original_str, "."); 
    $len=strlen($original_str); 
    if($pos >= 0) 
    { 
    echo "<br/> Extension: ". substr($original_str,$pos+1,$len-$pos) ; 
    } 
+0

@jurchiks這裏發佈一個問題。是。至 。在大多數操作系統中,find'絕對是一個有效的文件名。 – meagar

+0

謝謝@meagar。感謝您的有效評論。 – Jasmeen

2
$file_parts = pathinfo($filename); 

$file_parts['extension']; 
$cool_extensions = Array('jpg','png'); 

if (in_array($file_parts['extension'], $cool_extensions)){ 
    FUNCTION1 
} else { 
    FUNCTION2 
} 
0

爲PHP 5.3+可以使用SplFileInfo()

$spl = new SplFileInfo($filename); 
print_r($spl->getExtension()); //gives extension 

此外,由於要檢查擴展名的文件上傳,我強烈建議使用MIME類型,而不是..

對於PHP 5.3+使用finfo類的

$finfo = new finfo(FILEINFO_MIME); 
print_r($finfo->buffer(file_get_contents($file name));