2012-08-31 135 views
0

我想知道如何讓PHP檢查它有什麼擴展,然後執行代碼。例如,讓我們看看它是一個.mp3文件,然後執行:echo'這是一個mp3文件'。當然不是那個代碼 - 但更先進。無論如何,有什麼想法等?用PHP檢查文件擴展名

+4

你真的想要的文件擴展名?還是內容類型? – Brad

回答

1

有多種方法可以做到這一點。如果你所做的只是檢查mp3,只是爆炸的時間段,彈出最後一個,然後看看字符串是否相等。

例如:

$name = "song.mp3"; 
$parts = explode('.', $name); 
$extension = array_pop($parts); 
if($extension == 'mp3'){ 
    echo 'This is a mp3 file.'; 
} 

如果你檢查各種各樣的擴展,他們被上傳使用

$_FILES['file']['type']; 
+0

當文件名包含一個點時,這將不起作用。就像這個文件名一樣,它會失敗「my.test.txt」 –

+0

是的,它會導致你刪除最後一個擴展元素array_pop。我試了一下,它的工作,但試試看,如果我錯了,讓我知道。 – Phil

2

使用pathinfo() function到文件的擴展名分離,然後使用if語句中的值。

+0

如果文件正在上傳,這項工作是否可行?由於上傳文件沒有擴展名(我通常看起來像這樣tmp_name =>/tmp/php8Nxotq)。 – Phil

+0

謝謝。現在幾乎已經有了。 我該怎麼做這樣pathinfo(PHP)會檢查一個目錄? – user1622951

+0

'echo「{mp3:\」music/$ file_name \「,ogg:\」musicogg/$ path_parts \「.ogg}」;' 其中$ file_name正在查看音樂目錄(並且完全按照它的工作原理),現在我想要它從音樂目錄中獲得的名稱,並將代碼的最後部分放在一個.ogg擴展名中。或者它將查看musicogg目錄並檢查文件是否存在。有點失落了。 – user1622951

0

您可以使用filetype()$_FILES[$file][type]來獲得文件類型 。

1

檢查這兩個選項來做到這一點:

$filename = 'music.mp3' 
$ext = substr(strrchr($filename, '.'), 1); 

$filename = 'music.mp3'; 
$ext = pathinfo($filename, PATHINFO_EXTENSION); 

希望它能幫助:)

0

試試這個

$file_name = "test.txt"; 
    $extension = pathinfo($file_name); 
    echo "Your file extension is ".$extension ['extension']; 
0

如果要正確檢測文件的類型,使用Fileinfo

例撕開了PHP的評論:

<?php 
$fi = new finfo(FILEINFO_MIME,'/usr/share/file/magic'); 
$mime_type = $fi->buffer(file_get_contents($file));