while (false !== ($file = readdir($handle))) {
if ($file !== "." && $file !== ".." && fnmatch($mask, $file)) {
$dirList[] = $file;
}
}
我试图使用这样的多文件扩展名模式:
$mask = "*.{jpg,png,gif}";
但这不起作用.没有文件匹配.这很奇怪,因为相同的模式在终端中可以正常工作.它也可以与glob()完美配合,返回我想要的文件.我知道其余的代码没有什么问题,因为使用“ * .jpg”作为掩码也可以与fnmatch一起使用. fnmatch是否应该支持shell中可用的相同模式?
解决方法:
不支持.
AFAIK *.{ext,alt}是Shell Glob的ksh和bash扩展.而且fnmatch()是系统功能,但是功能在Unix变体之间有所不同(BSD拥有,而Linux / glibc似乎没有).我相信有一个FNM_EXTMATCH常量可以使{alt}工作.但是PHP不支持/不支持它.
但是,您可以仅将glob()与GLOB_BRACE选项配合使用,该选项支持上述.{jpeg,png,gif}匹配.这样,您将为自己保存一个readdir().
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。