Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Glob is not working when directory name with special characters like square brackets "[ ]"

Tags:

php

wordpress

I have issue while using glob function when path directory with square brackets.

// 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>';

Above code is working but when directory name with square brackets like dir[name] or dir - [name] then its not working.

// 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>';
like image 426
Kiritkumar Avatar asked Jan 20 '16 11:01

Kiritkumar


2 Answers

Thanks for all of you.

I got exact solution for my query. below code is a working for me

$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>';
like image 93
Kiritkumar Avatar answered Sep 20 '22 16:09

Kiritkumar


This is what I use:
$path = str_replace(['[',']',"\f[","\f]"], ["\f[","\f]",'[[]','[]]'], $path);

All in one line.

like image 34
David Refoua Avatar answered Sep 19 '22 16:09

David Refoua