【问题标题】:PHP: Using glob() to list *.txt and directories?PHP:使用 glob() 列出 *.txt 和目录?
【发布时间】:2014-01-02 23:22:20
【问题描述】:

而不是列出所有文件和目录

foreach(glob("/*") as $file) {
    ...
}

有没有办法过滤 *.txt 文件和目录?因为有了这个例子

foreach(glob("/*.txt") as $file) {
    ...
}

只会得到 *.txt 文件,而不是目录。但是要仅列出目录,这将起作用:

foreach(glob("/*", GLOB_ONLYDIR) as $file) {
    ...
}

但会忽略 *.txt 文件。我试图避免在读取目录后使用 preg_match() 或类似操作,因为如果有大约 5000 个不必要的文件(带有 *.jpg、*.png 的图像文件),它将浪费服务器资源。

谢谢。

【问题讨论】:

  • 为什么不调用glob() 两次,然后在解析前合并结果数组?
  • 是的,可以选择。但想知道是否可以一次性完成。谢谢!
  • @user702300 您如何区分名为foo 的文件和名为foo 的目录。我认为您需要使用两个函数,一个获取所有目录,另一个获取特定文件。
  • 这可能会有所帮助:PHP Regex specify multiple paths using glob
  • @HamZa 对于文件,我只对 *.txt 感兴趣,直接,任何名称,谢谢!

标签: php regex


【解决方案1】:

也试过GLOB_BRACE,但还是不行,只好用下面的代码:

$aDir1 = glob('/*.txt');   // current directory
$aDir2 = glob('/*/*.txt'); // subdirectory, one level below

$aDir = asort(array_merge($aDir1, $aDir2));

谢谢。

【讨论】:

    猜你喜欢
    • 2014-06-02
    • 2012-04-03
    • 2016-10-05
    • 2012-01-11
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多