ChatGPT解决这个技术问题 Extra ChatGPT

列出一个目录中的所有文件PHP [重复]

这个问题在这里已经有了答案:Getting the names of all files in a directory with PHP (15 answers) PHP list all files in directory [duplicate] (5 answers) 9 年前关闭。

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

glob() 或 scandir() 是显而易见的选择
您能否举一个使用这些功能的代码示例,或者更多地解释它们?
对于示例和解释 - 文档确实是最好的去处......它是官方来源......
有趣的是,Stack Overflow“做你的功课”搜索没有找到这些文档。谢谢!
$temp_files = glob(__dir__.'/*'); foreach($temp_files as $file) {.............}

M
Mukesh Chapagain

您正在寻找命令 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_diff() array_values(array_diff(scandir($path), array('..', '.'))); 之后使用 array_values() 重新索引数组
O
Orel Biton

检查一下: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,您必须再次遍历结果