列出一个目录PHP中的所有文件

Sha*_*pat 223 php directory list

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

mia*_*iah 487

您正在寻找命令scandir.

$path    = '/tmp';
$files = scandir($path);
Run Code Online (Sandbox Code Playgroud)

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

$files = array_diff(scandir($path), array('.', '..'));
Run Code Online (Sandbox Code Playgroud)

  • 这是更优雅的解决方案.我还要添加/推荐$ files = array_diff(scandir($ path),array('..','.')); (82认同)
  • 实际上不是`$ files`而是`$ filesAndDirs` (23认同)
  • $ files = array_values(array_diff(scandir($ path),array('.','..'))); //这将重新索引 (7认同)
  • 我在查找目录时遇到了一个小问题。`$files = array_diff(scandir(__DIR__ .$path), array('.', '..'));` 解决了这个问题。来自 http://stackoverflow.com/questions/11885717/scandir-fail-to-open-directory (3认同)
  • 在 **array_diff()** `array_values(array_diff(scandir($path), array('..', '.')));` 之后使用 **array_values()** 重新索引数组 (2认同)

Ore*_*ton 231

检查出来:readdir()

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

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

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

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

            echo "$entry\n";
        }
    }

    closedir($handle);
}
Run Code Online (Sandbox Code Playgroud)

编辑:miah的解决方案比我的更优雅,你应该使用他的解决方案.

  • 这也很完美`$files = scandir($imgspath); $total = count($files); $图像=数组();for($x = 0; $x <= $total; $x++): if ($files[$x] != '.' && $files[$x] != '..') { $images[] = $文件[$x]; }结束;` (3认同)
  • 更好地使用`glob()`!http://php.net/manual/en/function.glob.php (3认同)
  • 你的优点是:你可以在一个循环中进行过滤。假设您只想拥有“.html”文件而不包含包含“404”的文件,您可以使用解决方案在一个循环中执行此操作。Miah,你必须再次循环查看结果 (2认同)