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

Posted

技术标签:

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

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

【问题讨论】:

glob() 或 scandir() 是显而易见的选择 您能否举一个使用这些函数的代码示例,或者详细解释一下? 示例和解释 - 文档确实是最好的去处...这是官方来源... 这很有趣,堆栈溢出的“做你的功课”搜索没有找到这些文档。谢谢! $temp_files = glob(__dir__.'/*'); foreach($temp_files as $file) ............. 【参考方案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('.', '..')); 解决了这个问题。来自***.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,您必须再次遍历结果

以上是关于列出一个目录中的所有文件PHP [重复]的主要内容,如果未能解决你的问题,请参考以下文章

列出目录中的所有文件夹(PHP)[重复]

PHP - 在下拉菜单中递归列出所有目录和子目录[重复]

Python:列出子目录中的导入选项,然后导入其中一个[重复]

包括目录中的所有PHP文件[重复]

在 C# 中列出文件夹内的重复文件:利用 LINQ.AsParallel

列出与Java中的模式匹配的目录中的文件[重复]