2011-09-27 19 views
33

Ho uno script di caricamento che ho bisogno di controllare l'estensione del file, quindi eseguire funzioni separate in base all'estensione del file. Qualcuno sa quale codice dovrei usare?Estensione file di controllo PHP

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

possibile duplicato di [Come estrai un'estensione di file in PHP?] (http://stackoverflow.com/questions/173868/how-to-extract-a-file-extension-in-php) –

risposta

78

pathinfo è quello che stai cercando per

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

Che cosa è il caso di nessuna estensione? Caso NULL? Astuccio ""? – swl1020

+2

Aggiornato. stringa vuota '" "' è per i file e termina con '.'. 'NULL' non ha estensione di file. Potresti rompere la dichiarazione del caso, ma per l'esempio li raggruppo insieme. – Brombomb

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

Ho usato questo codice su una sezione del mio sito web. Tuttavia, quando lo si esegue insieme a echo "$ info", restituisce sempre il valore Array. Perchè è questo? –

+0

@ user2910074 Questa domanda è VECCHIA e vedrò il tuo codice per fornire aiuto. Suggerisco di pubblicare una domanda qui su 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 'questo. è. a . find' è un nome di file assolutamente valido nella maggior parte dei sistemi operativi. – meagar

+0

Grazie @meagar. Grazie per il tuo commento valido. – 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

per PHP 5.3+ è possibile utilizzare la classe SplFileInfo()

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

Anche perché si sta verificando estensione per il caricamento di file, Mi consiglia di utilizzare il tipo MIME invece ..

per PHP 5.3+ utilizzare la classe finfo

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