gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 01:09:29 25 4
gpt4 key购买 nike

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

while (false !== ($file = readdir($handle))) {
if ($file !== "." && $file !== ".." && fnmatch($mask, $file)) {
$dirList[] = $file;
}
}

我正尝试使用这样的多文件扩展名模式:

$mask = "*.{jpg,png,gif}";

但它不起作用。没有文件匹配。这很奇怪,因为相同的模式在终端中工作得很好。它也可以与 glob() 完美配合,返回我想要的文件。我知道其余代码没有任何问题,因为使用“*.jpg”作为掩码也适用于 fnmatch。难道 fnmatch 不应该支持 shell 中可用的相同模式吗?

最佳答案

不支持。

据我所知,*.{ext,alt} 是 shell glob 的 ksh 和 bash 扩展。 fnmatch() 是一个系统函数,但功能因 Unix 变体而异(BSD 有,Linux/glibc 似乎没有)。存在一个 FNM_EXTMATCH 常量,我相信它可以让 {alt} 工作。但是 PHP 不支持它/传递它。

但是您可以将 glob()GLOB_BRACE 选项一起使用,它支持所说的 .{jpeg,png,gif} 匹配。这样您就可以节省 readdir()。

关于php - 使用 fnmatch() 匹配多个文件扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4452905/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com