【发布时间】:2015-04-29 12:27:23
【问题描述】:
我正在使用 glob 从目录中获取所有图像。但是,目录中的一些图像是缩略图,在文件扩展名之前由“-m”标识,我想从文件列表中排除这些图像。因此,例如可能有:
image-1.png
image-1-m.png
portrait.png
portrait-m.png
front-panel-cold.png
front-panel-cold-m.png
front-panel-warm.png
front-panel-warm-m.png
使用
foreach(glob($imdir."/*[!m].*") as $img) {
echo $img . "<br>\n";
}
我可以列出所有不以 m 结尾的文件,但这也不包括 front-panel-warm.png。我找不到转义连字符的方法:
glob($imdir."/*[!\-m].*")
没有结果,
glob($imdir."/*[!-m].*")
给出与 [!m] 和
相同的结果glob($imdir."/*[!--m].*")
排除所有以 n 之前的任何字母结尾的文件。我也试过用大括号
glob($imdir."/*[!{-m}].*", GLOB_BRACE)
但这似乎也不起作用。
任何想法我哪里出错了,或者这只是我需要使用 preg_match 的东西?
【问题讨论】:
-
使用双反斜杠转义连字符
[!\\-m] -
看起来很违反直觉,@tzafar,就像 [!\-m] 它根本不返回任何结果。
-
我已经检查了这个并且它工作正常
glob($imdir."/*[!-m].*") -
它是否显示以“m”结尾但不以“-m”结尾的文件?对我来说不是这样。