2012-11-06 42 views
0

我想查找所有擴展名爲「tif」或「tiff」的文件,大寫或小寫。 目前我使用下面的代碼:使用glob通過擴展名查找文件

$total_files = glob(BATCH_TIFF_PATH."*.[tT][iI][fF]") 

但我只得到那些大寫或小寫爲.tif文件

其中BATCH_TIFF_PATH是恆定的路徑,包括在最後一個路徑的\

我也想限制在文件夾中找不到titifff

回答

1

這應該可以做到。

$total_files = glob(BATCH_TIFF_PATH."*.{[tT][iI][fF][fF],[tT][iI][fF]}", GLOB_BRACE) 
+0

試着用'GLOB_BRACE',忘了添加它。 – ohaal

+0

glob沒有任何問題。除非......你在測試什麼操作系統?我懷疑Windows,完全基於你說'BATCH_TIFF_PATH'最後有一個反斜槓? – ohaal

+0

是的,我正在使用Windows親切地爲我提供一個解決方案。 –

0

既然你只是在尋找這兩個擴展,爲什麼不直接在正則表達式中硬編碼呢?

\.(tif|tiff|TIFF|TIF)$ 

這將匹配字符串(文件名)末尾的tif,tiff,TIF或TIFF之後的點。

+0

試過這個,但不工作$ total_files = glob(BATCH_TIFF_PATH。「*。(tif | tiff | tif)$」) –

+0

請務必轉義點字符,否則會(應該? )充當一個特殊的正則表達式運算符。 –

+0

$ total_files = glob(BATCH_TIFF_PATH。「* \。(tif | tiff | TIFF | TIF)$」);不工作,我認爲這個問題與glob方法規範有關。 –

0

我不知道真正的批處理正則表達式,但這通常會起作用,你只需要適應它。

.*\.(tiff?|TIFF?)$