我想查找所有擴展名爲「tif」或「tiff」的文件,大寫或小寫。 目前我使用下面的代碼:使用glob通過擴展名查找文件
$total_files = glob(BATCH_TIFF_PATH."*.[tT][iI][fF]")
但我只得到那些大寫或小寫爲.tif
文件
其中BATCH_TIFF_PATH
是恆定的路徑,包括在最後一個路徑的\
。
我也想限制在文件夾中找不到ti
或tifff
。
我想查找所有擴展名爲「tif」或「tiff」的文件,大寫或小寫。 目前我使用下面的代碼:使用glob通過擴展名查找文件
$total_files = glob(BATCH_TIFF_PATH."*.[tT][iI][fF]")
但我只得到那些大寫或小寫爲.tif
文件
其中BATCH_TIFF_PATH
是恆定的路徑,包括在最後一個路徑的\
。
我也想限制在文件夾中找不到ti
或tifff
。
這應該可以做到。
$total_files = glob(BATCH_TIFF_PATH."*.{[tT][iI][fF][fF],[tT][iI][fF]}", GLOB_BRACE)
既然你只是在尋找這兩個擴展,爲什麼不直接在正則表達式中硬編碼呢?
\.(tif|tiff|TIFF|TIF)$
這將匹配字符串(文件名)末尾的tif,tiff,TIF或TIFF之後的點。
試過這個,但不工作$ total_files = glob(BATCH_TIFF_PATH。「*。(tif | tiff | tif)$」) –
請務必轉義點字符,否則會(應該? )充當一個特殊的正則表達式運算符。 –
$ total_files = glob(BATCH_TIFF_PATH。「* \。(tif | tiff | TIFF | TIF)$」);不工作,我認爲這個問題與glob方法規範有關。 –
我不知道真正的批處理正則表達式,但這通常會起作用,你只需要適應它。
.*\.(tiff?|TIFF?)$
試着用'GLOB_BRACE',忘了添加它。 – ohaal
glob沒有任何問題。除非......你在測試什麼操作系統?我懷疑Windows,完全基於你說'BATCH_TIFF_PATH'最後有一個反斜槓? – ohaal
是的,我正在使用Windows親切地爲我提供一個解決方案。 –