2012-05-14 51 views
37

這裏是我當前的代碼:PHP文件中列出多個文件擴展名

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

這工作得很好。但是,我想要列出其他圖像類型,例如.png,gif等。

我可以請幫助一些人修改上面的代碼以使其工作。我曾嘗試沒有成功如下:

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

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

和其他變化......

回答

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

只需使用GLOB_BRACE關於周圍的逗號空間時要小心: {JPG,PNG,GIF}正常工作,但 {JPG,PNG,GIF}與一家領先的空間,將只匹配前如預期的那樣,但不是後者。 –

+6

只是一個領導。這是區分大小寫的,所以如果你的.JPG文件不能工作。你可以使用'$ files = glob(「*。{[jJ] [pP] [gG],[pP] [nN] [gG],[gG] [iI] [fF]}」,GLOB_BRACE);' –

+0

@ hidden-username這不起作用。它似乎只得到每個組的最後一個[],所以'*。[gG],*。[gG],*。[fF]'在這種情況下。可能支撐和[]不能一起工作。 – My1

0

我的兩分錢:

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

有了這個,你可以創建所有的數組您正在尋找的擴展程序,而不用擔心不適當的使用情況。 希望它可以幫助