2012-05-14 15 views
37

Qui è il mio codice corrente:file PHP messa in vendita di più estensioni di file

$files = glob("*.jpg"); 

Questo funziona bene. Tuttavia, desidero elencare altri tipi di immagini, come ad esempio .png, gif, ecc.

Posso avere qualche aiuto per modificare questo codice sopra per farlo funzionare. Ho provato quanto segue senza successo:

$files = glob("*.jpg","*.png","*.gif"); 

$files = glob("*.jpg,*.png,*.gif); 

e altre variazioni ...

risposta

88
$files = glob("*.{jpg,png,gif}", GLOB_BRACE); 
+9

Basta essere attenti quando si usano GLOB_BRACE per quanto riguarda gli spazi intorno alla virgola: {jpg, png, gif} funziona come previsto, ma {jpg, png, gif} con uno spazio iniziale, sarà solo abbinare l'ex come previsto ma non il secondo. –

+6

Solo un testa a testa. Questo è case sensitive, quindi se i file forniti con .JPG non funzioneranno. Puoi usare '$ files = glob (" *. {[JJ] [pP] [gG], [pP] [nN] [gG], [gG] [iI] [fF]} ", GLOB_BRACE);' –

+0

@ username nascosto questo non funziona. sembra ottenere solo l'ultimo [] di ciascun gruppo, quindi '*. [gG], *. [gG], *. [fF]' in questo caso. probabilmente rinforzi e [] non lavora insieme. – My1

0

I miei due centesimi:

$aviableImageFormats = [ 
"png", 
"jpg", 
"jpeg", 
"gif"]; 
$searchDir = /*yourDir*/; 
$imageExtensions = "{"; 
foreach ($aviableImageFormats as $extension) { 
    $extensionChars = str_split($extension); 
    $rgxPartial = null; 
    foreach ($extensionChars as $char) { 
     $rgxPartial .= "[".strtoupper($char).strtolower($char)."]"; 
    } 
    $rgxPartial .= ","; 
    $final .= $rgxPartial; 
}; 
$imageExtensions .= "}"; 
glob($searchDir."/*.".$imageExtensions, GLOB_BRACE) 

Con questo si può creare un array di tutte le estensioni che stai cercando senza preoccuparti di un uso improprio del caso. Speranza che aiuta

Problemi correlati