在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