在特定目录中list all files and directories很容易。
如何以递归方式执行相同的任务?也就是说,从给定目录开始,生成一个指向所有文件和目录的链接列表,包括目录树每个级别的子文件夹中的那些文件和目录?例如:
mydir\
mydir\file.php
mydir\sub1\
mydir\sub1\file2.php
mydir\sub1\sub2\
mydir\sub1\sub2\file3.php
mydir\sub3\
......等等。
答案 0 :(得分:1)
你会想要几乎一样(通过使用dir类或opendir函数)。
但是,不要只运行1个directoy,而是创建一个完全正确的函数。然后,在该函数中,使用filetype()
函数检查迭代中的当前项是否是目录,并再次在该目录上运行函数,从而生成所谓的递归函数< /强>
现在,只需启动您想要列出的基本目录的功能,它将根据您的需要浏览所有子目录。
常见错误:
修改强> 实际上,DanFromGermany上面的回答非常好。 如果您愿意依赖底层操作系统功能, if 您知道您的脚本将始终用于具有{{1}的Unix / Linux / BSD系统},你会想要使用那个。
答案 1 :(得分:0)
伪代码:
<?php
$target = './files/';
$exclude = array(
$target,
'secret_file.jpg',
);
$files = explode(PHP_EOL, exec('find ' . $target));
foreach ($files as $file) {
if (!in_array($file, $exclude)
&& !in_array(str_replace($target, $file), $exclude) {
echo '<a href="' . $file . '>' . $file . '</a>';
}
}
(适用于Linux,如果启用了exec
)
exec('find ./files/')
为您提供如下输出:
[root@giant.flowl.info]# find ./cron/
./cron/
./cron/cron.php
./cron/temp/session.tmp
./cron/temp/test/temp.jpg