【问题标题】:List all files in one directory PHP [duplicate]列出一个目录中的所有文件PHP [重复]
【发布时间】:2013-03-24 08:53:40
【问题描述】:

用 PHP 列出一个目录中所有文件的最佳方法是什么?是否有 $_SERVER 函数可以执行此操作?我想列出 usernames/ 目录中的所有文件并使用链接遍历该结果,这样我只需单击文件名的超链接即可到达那里。谢谢!

【问题讨论】:

  • glob() 或 scandir() 是显而易见的选择
  • 您能否举一个使用这些函数的代码示例,或者详细解释一下?
  • 示例和解释 - 文档确实是最好的去处...这是官方来源...
  • 这很有趣,堆栈溢出的“做你的功课”搜索没有找到这些文档。谢谢!
  • $temp_files = glob(__dir__.'/*'); foreach($temp_files as $file) {.............}

标签: php list directory


【解决方案1】:

您正在寻找命令scandir

$path    = '/tmp';
$files = scandir($path);

以下代码将从scandir返回的数组中删除...

$files = array_diff(scandir($path), array('.', '..'));

【讨论】:

  • 这是更优雅的解决方案。我还会添加/推荐 $files = array_diff(scandir($path), array('..', '.'));
  • 其实不是$files而是$filesAndDirs
  • $files = array_values(array_diff(scandir($path), array('.', '..'))); // 这将重新索引
  • 我在查找目录时遇到了一个小问题。 $files = array_diff(scandir(__DIR__ .$path), array('.', '..')); 解决了这个问题。来自stackoverflow.com/questions/11885717/…
  • 使用 array_values()array_diff() 之后重新索引数组 array_values(array_diff(scandir($path), array('..', '.')));
【解决方案2】:

看看这个:readdir()

这段代码应该列出某个目录中的所有条目:

if ($handle = opendir('.')) {

    while (false !== ($entry = readdir($handle))) {

        if ($entry != "." && $entry != "..") {

            echo "$entry\n";
        }
    }

    closedir($handle);
}

编辑:miah的解决方案比我的要优雅得多,你应该改用他的解决方案。

【讨论】:

  • 这也很完美$files = scandir($imgspath); $total = count($files); $images = array(); for($x = 0; $x <= $total; $x++): if ($files[$x] != '.' && $files[$x] != '..') { $images[] = $files[$x]; } endfor;
  • 使用glob() 更好! php.net/manual/en/function.glob.php
  • 当性能很重要时,这可能是一个更好的解决方案:readdir-vs-scandir
  • 您的优势是:您可以在一个循环中过滤。假设您只想拥有.html 文件并且没有包含404 的文件,您可以使用您的解决方案在一个循环中执行此操作。 Miah,您必须再次遍历结果
猜你喜欢
  • 2011-04-19
  • 2018-06-08
  • 2017-05-01
  • 2013-10-30
  • 2012-09-02
相关资源
最近更新 更多