在典型的文件匹配代碼:匹配多個文件擴展名()
while (false !== ($file = readdir($handle))) {
if ($file !== "." && $file !== ".." && fnmatch($mask, $file)) {
$dirList[] = $file;
}
}
我試圖用這樣的多個文件擴展模式:
$mask = "*.{jpg,png,gif}";
,但它不工作。沒有文件匹配。這很奇怪,因爲相同的模式在終端中工作得很好。它也適用於glob(),並返回我想要的文件。我知道其餘代碼沒有問題,因爲使用「* .jpg」作爲掩碼也適用於fnmatch。不是fnmatch應該支持shell中可用的相同模式嗎?
*(svn)* [file.c](http://svn.php.net/viewvc/php/php-src/trunk/ext/standard/file.c?view=markup) - 對於那些誰想看看它是如何實施的 – Gordon 2010-12-15 17:43:32
有趣。理論上講,如果你的libc支持_EXTMATCH,你可以通過'0x20'。 – mario 2010-12-15 17:47:43
謝謝。正如你所建議的那樣,我選擇使用glob(),因爲它支持我需要的東西。也許在未來的PHP版本中,這將通過FNM_EXTMATCH常量來支持。 – devius 2010-12-15 18:26:02