In der typischen Codedatei Matching:passende mehrere Dateierweiterungen mit fnmatch()
while (false !== ($file = readdir($handle))) {
if ($file !== "." && $file !== ".." && fnmatch($mask, $file)) {
$dirList[] = $file;
}
}
Ich habe versucht, eine multiple Dateierweiterung Muster wie folgt zu verwenden:
$mask = "*.{jpg,png,gif}";
aber es funktioniert nicht Arbeit. Keine Dateien stimmen überein. Das ist ziemlich seltsam, da das gleiche Muster in einem Terminal gut funktioniert. Es funktioniert auch perfekt mit glob() und gibt die Dateien zurück, die ich möchte. Ich weiß, dass mit dem Rest des Codes nichts falsch ist, weil die Verwendung von "* .jpg" als Maske auch mit fnmatch funktioniert. Sollte fnmatch nicht die gleichen Muster unterstützen, die in einer Shell zur Verfügung stehen?
* (svn) * [file.c] (http://svn.php.net/viewvc/php/php-src/trunk/ext/standard/file.c?view=markup) - für diejenigen, die möchte sehen, wie es umgesetzt wird – Gordon
Interessant. Theoretisch könnten Sie '0x20' durchreichen, wenn Ihre libc _EXTMATCH unterstützt. – mario
Danke. Ich habe mich dafür entschieden, stattdessen glob() zu verwenden, wie Sie vorgeschlagen haben, da das unterstützt, was ich brauche. Vielleicht wird dies in einer zukünftigen Version von PHP über diese FNM_EXTMATCH-Konstante unterstützt. – devius