访问特定文件夹时,glob()返回空数组

keanu_reeves

我使用以下功能从特定文件夹获取文件列表:

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

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

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

...即使路径是100%有效的。当将此路径复制到我的文件浏览器时,它可以正常工作(如果*最后删除了该路径)。

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

干杯。

jspit

您必须屏蔽以下字符?* []用\表示,如果它们对glob不具有任何特殊含义。

请参见手册中的特殊字符

$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系统上不可用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章