微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php-使用fnmatch()匹配多个文件扩展名

在典型的文件匹配代码中:

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 举报,一经查实,本站将立刻删除。

相关推荐