列出一个目录中的所有文件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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Python:列出子目录中的导入选项,然后导入其中一个[重复]