2012-11-06 40 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?)$