【问题标题】:glob() returns empty array when accessing a specific folderglob() 访问特定文件夹时返回空数组
【发布时间】:2019-12-08 03:19:26
【问题描述】:

我使用以下函数从特定文件夹中获取文件列表:

$files = glob("/path/to/file/*");

遗憾的是,当使用以下文件夹路径时,glob 不输出任何内容:

$files = glob("/var/www/html/dl-meta/anime/[Erai-raws] Anime name - 01~12 [720p][Multiple Subtitle]/*");

...即使路径 100% 有效。将此路径复制到我的文件资源管理器时,它工作得很好(如果我们删除了最后的 *)。

这是为什么呢?我需要逃脱什么角色?是否有任何其他字符我应该转义,以便将来不会发生这种类型的错误?

干杯。

【问题讨论】:

  • 有什么想法吗?我完全迷失在这里..
  • 您是否尝试获取本地计算机文件名?

标签: php file indexing glob


【解决方案1】:

您必须屏蔽以下字符? * [ ] 和 \ 如果它们不应该对 glob 有任何特殊含义。

查看manual中的特殊字符。

$files = glob("/var/www/html/dl-meta/anime/\[Erai-raws\] Anime name - 01~12 \[720p\]\[Multiple Subtitle\]/*");

更新:

我做了一些测试,发现反斜杠在 Windows 上不起作用。在 Windows 中,反斜杠是目录分隔符,因此不能用作转义字符。除了少数例外,此表达式可用作 Linux 和 Windows 的转义函数:

$path = preg_replace('~[\[?{]~','[$0]',$path);
$files = glob($path.'/*');

如果激活了 GLOB_BRACE 选项,这在带有 {} 的 Windows 上不起作用。用于 glob () 的 GLOB_BRACE 在某些 Unix/Linux 系统上不可用。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-26
  • 2017-06-21
  • 2022-09-29
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
相关资源
最近更新 更多