使用php列出目录中的所有文件夹子文件夹和文件
P粉891237912
2023-08-27 16:21:06
[PHP讨论组]
<p>请给我一个使用 php 列出目录中所有文件夹、子文件夹、文件的解决方案。我的文件夹结构是这样的:</p>
<pre class="brush:php;toolbar:false;">Main Dir
Dir1
SubDir1
File1
File2
SubDir2
File3
File4
Dir2
SubDir3
File5
File6
SubDir4
File7
File8</pre>
<p>我想获取每个文件夹内所有文件的列表。</p>
<p><strong>php中有shell脚本命令吗?</strong></p>
显示文件夹结构的一种非常简单的方法是使用
RecursiveTreeIterator类(PHP 5 >= 5.3.0、PHP 7)并生成 ASCII 图形树。$it = new RecursiveTreeIterator(new RecursiveDirectoryIterator("/path/to/dir", RecursiveDirectoryIterator::SKIP_DOTS)); foreach($it as $path) { echo $path."<br>"; }http://php.net/manual/en/class.recursivetreeiterator.php
通过使用
RecursiveTreeIterator::setPrefixPart更改前缀,还可以对树的 ASCII 表示进行一些控制,例如$it->setPrefixPart(RecursiveTreeIterator::PREFIX_LEFT, "| ");function listFolderFiles($dir){ $ffs = scandir($dir); unset($ffs[array_search('.', $ffs, true)]); unset($ffs[array_search('..', $ffs, true)]); // prevent empty ordered elements if (count($ffs) < 1) return; echo '<ol>'; foreach($ffs as $ff){ echo '<li>'.$ff; if(is_dir($dir.'/'.$ff)) listFolderFiles($dir.'/'.$ff); echo '</li>'; } echo '</ol>'; } listFolderFiles('Main Dir');