Glob не работает, когда имя каталога имеет специальные символы, такие как квадратные скобки ""

У меня проблема при использовании функции glob, когда каталог путей с квадратными скобками.

// Example 1 - working $path = 'temp'. DIRECTORY_SEPARATOR .'dir - name'; $files = glob($path . DIRECTORY_SEPARATOR . '*.txt'); // List all files echo '<pre>'; print_r($files); echo '</pre>'; 

Над кодом работает, но когда имя каталога с квадратными скобками, например, dir [name] или dir – [name], то оно не работает.

 // Example 2 - not working $path = 'temp'. DIRECTORY_SEPARATOR .'dir - [name]'; $files = glob($path . DIRECTORY_SEPARATOR . '*.txt'); // result got empty if file on that directory echo '<pre>'; print_r($files); echo '</pre>'; 

Спасибо всем.

Я получил точное решение для моего запроса. ниже код работает для меня

 $path = 'temp'. DIRECTORY_SEPARATOR .'dir - [name]'; $path = str_replace('[', '\[', $path); $path = str_replace(']', '\]', $path); $path = str_replace('\[', '[[]', $path); $path = str_replace('\]', '[]]', $path); $files = glob($path . DIRECTORY_SEPARATOR . '*.txt'); // List files echo '<pre>'; print_r($files); echo '</pre>'; 

[foo] имеет особое значение, он представляет собой класс символов (синтаксис регулярных выражений).

Таким образом, чтобы [ и ] означали квадратные скобки в буквальном смысле , вам нужно избегать их – предшествующее им обратную косую черту.

Пытаться

 $path = 'temp'. DIRECTORY_SEPARATOR .'dir - [name]'; $from = array('[',']'); $to = array('\[','\]'); $files =glob(str_replace($from,$to,$path . "\\*.txt")); echo '<pre>'; print_r($files); echo '</pre>'; 

Это то, что я использую:
$path = str_replace(['[',']',"\f[","\f]"], ["\f[","\f]",'[[]','[]]'], $path);

Все в одной строке.