Glob模式不匹配任何内容

问题描述 投票:3回答:1

根据PHP documentation,模式...递归匹配所有子目录,但是当我尝试使用它时,没有文件匹配。

根据文档,glob自PHP 5.1起就没有更改,但是如果有关系,我正在使用PHP 7.2.24。

目录结构:

.
├── bar
│   └── bar_file
└── foo
    ├── 1
    │   └── foo_1_file
    └── foo_file

PHP:

var_dump(glob('./.../*')); // prints array(0) {}
var_dump(glob('./.../foo_file')); // prints array(0) {}

我知道此问题有一个workaround,但我想知道是否有PHP本机解决方案,否则,为什么PHP参考文档有缺陷。

php directory glob
1个回答
0
投票

    IEEE 1003.1中没有递归glob语法
  1. PHP UNIX implementation从标准C库委托给GLOB(3)。在Linux上,最有可能是glibc,它不支持递归syntax

  2. PHP Windows implementation不支持目录递归

  3. PHP test suite中的所有glob测试都不包含涵盖三点(...)语法的测试。

  4. 根据the change的提交消息,它在PHP文档中引入了glob模式语法,特殊字符的列表基于djgpp libc库支持的字符。 djgpp manpage指出三点语法是对旧VMS功能的致敬。

  5. ...递归匹配所有子目录(VMS爱好者,很高兴!)。

所有这些都是有力的证据,除非PHP在支持它的平台上运行,例如PHP,否则文档中列出的递归语法将不起作用。在DOS或旧Windows上使用DJGPP。
© www.soinside.com 2019 - 2024. All rights reserved.