【问题标题】:File searching in a directory using php使用php在目录中搜索文件
【发布时间】:2011-04-23 04:39:50
【问题描述】:

我如何使用 php 列出文件夹及其子文件夹中的所有文件

【问题讨论】:

    标签: php file search


    【解决方案1】:

    您是在谈论作为其自己的程序或 Web 应用程序运行的 php 脚本。为什么需要这样做?

    echo shell_exec('find -name *');
    

    但是你真的可以在 shell 中运行它。

    如果您希望 Web 应用程序运行此脚本,www-data 将需要权限才能运行该脚本,让它这样做是非常不安全的。相反,您可以让具有适当权限的用户登录并执行此操作。没那么不安全。

    【讨论】:

    • 我想在运行网页时搜索文件夹及其子文件夹中的特定文件。
    • 要准确搜索此文件需要什么?
    【解决方案2】:

    您可以编写一个脚本以使用数组中的 php scandir 获取文件夹(和子文件夹)中的所有文件。然后您可以在该数组中搜索您的特定文件。

    示例:

    <?php
        $dir    = '/tmp';
        $files = scandir($dir);
        print_r($files); 
    ?>
    

    输出如下内容:

    Array
    (
        [0] => .
        [1] => ..
        [2] => bar.php
        [3] => foo.txt
        [4] => somedir
    )
    

    【讨论】:

      【解决方案3】:

      您可以使用 SPL 迭代器。特别是RecursiveDirectoryIterator,它将递归遍历给定的目录结构。

      像这样:

      $realpath = realpath('/path/to/file');
      
      
      $fileObjects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($realpath),
                       RecursiveIteratorIterator::SELF_FIRST);
      
      foreach($fileObjects as $key => $object){
          if($object->getFilename() === 'filename.png') {
              echo $object->getPathname();
          }
      }
      

      SELF_FIRST 迭代模式基本上告诉迭代器先放置父项(父项先放置)。

      【讨论】:

      • SELF_FIRST 对于仅列出文件并不是特别有用,并且可能会混淆 OP。
      【解决方案4】:

      如果您希望能够为所有 txt 文件指定掩码或其他内容,例如 *.txt,那么没有比“glob”更好的功能了 :)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-17
        • 1970-01-01
        相关资源
        最近更新 更多