PHP:函数glob()在Windows上-具有多个范围的模式


PHP: function glob() on Windows - patterns with multiple ranges

我想要一个目录($path)中的图像列表。我想对文件扩展名进行不区分大小写的研究。下面的代码在Linux上运行良好,但在Windows上则不然。

foreach ( glob("$path/{*.[jJ][pP][gG],*.[jJ][pP][eE][gG],*.[gG][iI][fF],*.[pP][nN][gG],*.[bB][mM][pP],*.[tT][iI][fF][fF]}", GLOB_BRACE | GLOB_NOCHECK ) as $file ) {
   echo $file;
}

我添加了GLOB_NOCHECK标志来查看计算出的图案。以下是回应:

fotogallery/dir/[gG]
fotogallery/dir/[gG]
fotogallery/dir/[fF]
fotogallery/dir/[gG]
fotogallery/dir/[pP]
fotogallery/dir/[fF]

似乎只考虑每个逗号分隔表达式的最后一个范围([…])!为什么会发生这种情况?

谢谢!:-)

这可能会帮助您解决问题

PHP手册关于这类问题的评论

由于您在windows平台上,您可以简单地删除范围。只需使用.jpeg、.jpg等即可。