PHP glob () в каталогах в квадратных скобках

На компьютере с 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 обрабатывает скобки как специальные символы, при обнаружении в параметре шаблона .

Шаблон * соответствует любому файлу в текущем рабочем каталоге. Однако glob () ведет себя так, как если бы он был запущен с шаблоном c: \\ [test] \\ *

Скобки затем интерпретируются как часть шаблона, когда на самом деле они являются частью каталога.

Предполагается, что glob обрабатывает путь как часть шаблона ? Я бы предпочел использовать текущий каталог в качестве начальной точку, а затем обработать только шаблон .

(Попытка подвести итоги): Функция glob действует так, как будто она получает c: \\ [test] \\ * в качестве шаблона соответствия, и пытается сопоставить либо c: \ t \ * , c: \ e \ * или c: \ s \ * . Но на самом деле шаблон * , и он не должен пытаться сопоставить что-либо из этого.

6
задан Unsigned 24 April 2012 в 20:59
поделиться