На Windows-машине следующий скрипт:
<?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
обрабатывает скобки как специальные символы, при обнаружении в параметре pattern
.
Шаблон *
соответствует любому файлу в текущем рабочем каталоге. Однако glob ()
ведет себя так, как если бы он был запущен с шаблоном c:\\[test]\\*
Скобки тогда интерпретируются как часть шаблона, когда на самом деле они
являются частью каталога.
Предполагается ли glob
трактовать путь как часть шаблона ? Я бы предпочел использовать текущий каталог в качестве отправной точки , а затем обработайте только шаблон .
(попытка суммировать): функция glob
действует так, как будто получает c:\\[test]\\*
в качестве шаблона совпадения, и пытается сопоставить либо c:\t\*
, c:\e\*
, либо c:\s\*
. Но шаблон на самом деле *
, и он не должен пытаться сопоставить что-либо из этого.