在Windows機器上,下面的腳本:PHP水珠()在括號目錄
<?php
mkdir("c:\\[test]");
file_put_contents("c:\\[test]\\test.txt", "some content");
chdir("c:\\[test]");
echo getcwd()."\n";
var_dump(glob('*'));
?>
顯示此:
C:\[test]
array(0) {
}
當這種預期:
C:\[test]
array(1) {
[0]=>
string(8) "test.txt"
}
我明白glob
將括號視爲特殊字符,在中找到時參數。
模式*
匹配當前工作目錄中的任何文件。然而,水珠() 的行爲就好像它是與模式c:\\[test]\\*
括號,然後被解釋爲模式的一部分,而事實上,他們 是目錄的一部分運行。
是glob
應該治療路徑作爲模式的一部分嗎?我寧願認爲它應該使用當前目錄作爲起點,然後僅處理模式。
(試圖總結):該glob
功能就像它的越來越c:\\[test]\\*
作爲匹配模式,並試圖要匹配c:\t\*
,c:\e\*
,或者c:\s\*
。但模式實際上是*
,它不應該試圖匹配任何。
我不能在Mac上覆制它,你可以檢查目錄和文件是否真的在你的窗口上正確創建? – ajreal
我可以建議明顯的,不要在目錄名稱中使用[]嗎? – 2011-12-02 04:25:45
@Dagon爲什麼[]不能用於目錄名稱? – xdazz