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



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

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 或其他一些方式的情况下过滤结果。

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.....

相关内容

最新更新