2012-05-14 12 views
37

Listing hier ist mein aktueller Code:PHP-Datei mehr Dateierweiterungen

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

Dies funktioniert gut. Ich möchte jedoch andere Bildtypen wie .png, gif usw. auflisten.

Kann ich bitte etwas Hilfe haben, um den obigen Code zu ändern, damit er funktioniert. Ich habe ohne Erfolg die folgende versucht:

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

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

und andere Variationen ...

Antwort

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

Nur vorsichtig sein, wenn GLOB_BRACE bezüglich Plätze rund um das Komma: {jpg, png, gif} funktioniert wie erwartet, aber {jpg, png, gif} mit einem führenden Platz, nur die ehemaligen entsprechen wie erwartet, aber nicht letzteres. –

+6

Nur ein Kopf hoch. Dies ist case sensitive, also wenn Ihre Dateien mit .JPG Dateien funktionieren nicht. Sie könnten '$ files = glob (" *. {[JJ] [pP] [gG], [pP] [nN] [gG], [gG] [iI] [fF]} ", GLOB_BRACE) verwenden;' –

+0

@ hidden-username das funktioniert nicht. es scheint nur die letzten [] jeder Gruppe zu bekommen, also '*. [gG], *. [gG], *. [fF]' in diesem Fall. wahrscheinlich Klammer und [] funktioniert nicht zusammen. – My1

0

Meine zwei Cent:

$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) 

Damit Sie ein Array aller erstellen Erweiterungen, nach denen Sie suchen, ohne sich über unsachgemäße Verwendung zu sorgen. Hoffe, es hilft

Verwandte Themen