php glob与通配符问题,因为它列出了所有

问题描述 投票:0回答:1

我有这些文件名,我想删除

 Desert-100x100.jpg
     Desert-1024x768.jpg
 Desert-150x150.jpg 
  Desert-300x225.jpg

但不想删除文件名

  Desert-e1536645590208-300x217.jpg
   Desert-e1536645590208-768x555.jpg

我已经使用了这些globs代码,我认为它是预期的

   foreach(glob("Desert-*[100-9999]x[100-9999]*.{jpg,gif,png}", GLOB_BRACE) as $file){ 

  unlink ($file);


   }

但我的问题是我们想要排除某些文件类型或更具体的文件包含e1536645590208这是动态的,我们没有控制所以我们可以使用stripos并过滤掉那些没有e1536645590208,但我认为必须有一些glob参数,这将允许我们过滤结果而不使用stripos或其他方法。

php regex preg-match glob
1个回答
1
投票

Glob不理解正则表达式,*表示0或更多任何字符,它不是量词。

用这个

glob("Desert-{1,2,3,4,5,6,7,8,9}*x*.{jpg,gif,png}", GLOB_BRACE);

要么

glob("Desert-[1-9]*x*.{jpg,gif,png}", GLOB_BRACE);

它会选择只有Desert-数字的文件,所以它会跳过所有有e.....的文件

© www.soinside.com 2019 - 2024. All rights reserved.