2012-05-14 11 views
37

aquí está mi código actual:archivo PHP listado de varias extensiones de archivo

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

Esto funciona bien. Sin embargo, quiero enumerar otros tipos de imágenes, como .png, gif, etc.

¿Puedo pedir algo de ayuda para modificar este código anterior para que funcione? He intentado lo siguiente sin éxito:

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

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

y otras variaciones ...

Respuesta

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

Sólo tenga cuidado al utilizar GLOB_BRACE con respecto a los espacios alrededor de la coma: {jpg, png, gif} funciona como se esperaba, pero {jpg, png, gif} con un espacio inicial, será única que coincida con el ex como se esperaba, pero no el último. –

+6

Solo un aviso. Esto distingue entre mayúsculas y minúsculas, por lo que si sus archivos dados con .JPG no funcionarán. Podría usar '$ files = glob (" *. {[JJ] [pP] [gG], [pP] [nN] [gG], [gG] [iI] [fF]} ", GLOB_BRACE);' –

+0

@ hidden-username esto no funciona. parece obtener solo el último [] de cada grupo, entonces '*. [gG], *. [gG], *. [fF]' en ese caso. probablemente corsé y [] no trabaje en conjunto. – My1

0

Mis dos centavos:

$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 esto se puede crear una matriz de toda la extensiones que está buscando sin preocuparse por el uso incorrecto de los casos. creo que sirve

Cuestiones relacionadas