php - Glob 模式不匹配任何内容
问题描述
注意:自从创建此线程以来,相关模式已从 PHP 文档中删除。
根据PHP 文档,该模式...
递归匹配所有子目录,但是当我尝试使用它时,没有文件匹配。
根据文档,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) {}
我知道这个问题有一个解决方法,但我想知道是否有 PHP 本机解决方案,或者如果没有,为什么 PHP 参考文档有缺陷。
解决方案
文档不完整甚至不正确。截至 2019 年 11 月,PHP 中没有明确支持递归 glob 语法的代码,底层操作系统库也不太可能支持它。
IEEE 1003.1中没有递归 glob 语法
PHP UNIX 实现从标准 C 库委托给GLOB(3) 。在 Linux 上,这很可能是不支持递归语法的 glibc 。
PHP Windows 实现不支持目录递归
PHP 测试套件中的所有 glob 测试都不包含涵盖三点 (...) 语法的测试。
根据在PHP 文档中引入 glob 模式语法的更改的提交消息,特殊字符列表基于 djgpp libc 库支持的字符列表。djgpp联机帮助页指出,三点语法是对旧 VMS 功能的致敬。
... 递归匹配所有子目录(VMS 爱好者,高兴!)。
所有这些都有力地证明了文档中列出的递归语法将不起作用,除非 PHP 运行在支持它的平台上,例如 DOS 或旧 Windows 上的 DJGPP。
推荐阅读
- python - 如何呈现用户复选框,然后将列表保存到选中的复选框?
- vba - 如何在VBA中仅替换字符串起始行
- python - 尝试在 flat_map 中加载数据集时出现错误“TypeError:预期的 str、字节或 os.PathLike 对象,而不是张量”
- mongodb - Mongoose:从一堆文件中更新一个文件
- angular - 主页中的控制组件(Angular/Ionic)
- python - 我正在尝试使用 pysimplegui,但我无法重新运行窗口
- c - 为什么使用gets()函数的返回值会出现分段错误?
- node.js - 与 ECS 一起使用时,AWS ALB 返回一个空页面
- python - 在创建循环时给多个矩形(使用图形模块)不同的名称?
- java - java线程在调用rest模板后收到等待状态的响应后是否很快恢复运行状态?