【问题标题】:Searching for specific file extensions in a folder/directory (PHP)在文件夹/目录中搜索特定文件扩展名 (PHP)
【发布时间】:2010-12-21 15:48:55
【问题描述】:

我正在尝试用 PHP 设计一个程序,它允许我在包含多个文件夹的已知目录中查找具有特定文件扩展名的文件(例如 .jpg、.shp 等)。 非常感谢有关我将需要使用哪些方法的示例代码、文档或信息。

【问题讨论】:

    标签: php file directory search


    【解决方案1】:

    glob 将获取给定目录中的所有文件,但不会获取子目录。如果您也需要,您将需要:10. 递归,20. 转到 10.

    这是伪伪代码:

    function getFiles($pattern, $dir) {
        $files = glob($dir . $pattern);
        $folders = glob($dir, GLOB_ONLYDIR);
        foreach ($folders as $folder) {
            $files = $files + getFiles($folder);
        }
        return $files;
    }
    

    显然需要对以上内容进行调整以使其正常工作,但希望您能明白这一点(请记住不要将目录链接指向“..”或“.”,否则您将进入无限循环小镇)。

    【讨论】:

      【解决方案2】:

      使用readdir 获取文件列表,使用fnmatch 确定它是否与您所需的文件名模式匹配。在函数中执行所有这些操作,并在找到目录时调用您的函数。如果您在实施时遇到困难,请提出另一个问题(如果您真的不知道从哪里开始,请发表评论)。

      【讨论】:

        【解决方案3】:

        看看 PHP 的 SPL DirectoryIterator

        【讨论】:

        • +1 太棒了!我忽略了 SPL。不过,OP 应该先熟悉一些基本的东西。
        • 如果学习 PHP,SPL 是一个很好的起点,因为它比 PHP 遗留的、不一致的函数库要多得多。
        【解决方案4】:

        我相信 PHP 的 glob() 函数正是您想要的:

        http://php.net/manual/en/function.glob.php

        【讨论】:

          【解决方案5】:

          glob 很简单:

          <?php
          foreach (glob("*.txt") as $filename) {
              echo "$filename size " . filesize($filename) . "\n";
          }
          ?>
          

          readdir page 有一些关于递归下降的建议。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-09-22
            • 1970-01-01
            • 2014-08-11
            • 2020-04-16
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多