当目录名称带有方括号“[]”等特殊字符时,Glob不起作用

时间:2016-01-20 11:47:32

标签: php wordpress

当路径目录带方括号时,我在使用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>';

4 个答案:

答案 0 :(得分:4)

谢谢你们所有人。

我得到了我的查询的确切解决方案。下面的代码对我有用

{{1}}

答案 1 :(得分:2)

这是我使用的:
$path = str_replace(['[',']',"\f[","\f]"], ["\f[","\f]",'[[]','[]]'], $path);

全部在一行。

答案 2 :(得分:1)

[foo]具有特殊含义,它表示一个字符类(正则表达式语法)。

所以要让[]方括号字面意思,你必须通过在它们前面加上反斜杠来逃避它们。

答案 3 :(得分:0)

尝试

PTHREAD_SCOPE_PROCESS