我正在尝试列出目录和子目录(一级深)作为导航的一部分,但我无法弄清楚如何限制搜索的深度。
我想要实现的目标:
|- <p>Directory</p>
||- <a>Sub Directory</a>
||- <a>Sub Directory</a>
|- <p>Directory</p>
||- <a>Sub Directory</a>
||- <a>Sub Directory</a>
现在我正在使用下面的代码列出一个目录并链接它,但它不包含子目录
$emailDirectory = "../";
$allPhpFiles = scandir($emailDirectory);
$phpfiles = array_diff($allPhpFiles, array('.', '..'));
<p>Other Emails</p>
<ul>
<?php foreach($phpfiles as $phpfile)
{
echo '<li><a href="../'.$phpfile.'">'.$phpfile.'</a></li>';
}?>
</ul>
我在这里也发现有人在谈论列出子目录
function page_title($url) {
$fp = file_get_contents($url);
if (!$fp)
return null;
$res = preg_match("/<title>(.*)<\/title>/siU", $fp, $title_matches);
if (!$res)
return null;
// Clean up title: remove EOL's and excessive whitespace.
$title = preg_replace('/\s+/', ' ', $title_matches[1]);
$title = trim($title);
return $title;
}
<?php function listFolderFiles($dir){
$ffs = scandir($dir);
echo '<ol>';
foreach($ffs as $ff){
if($ff != '.' && $ff != '..'){
echo '<li>'.$ff;
if(is_dir($dir.'/'.$ff)) listFolderFiles($dir.'/'.$ff);
echo '</li>';
}
}
echo '</ol>';
}
listFolderFiles('../../'); ?>
哪个好,但它们不是链接,它进入子目录并列出其中的项目,但正如我之前所说,我希望它切断子目录而不是更深入。
有什么建议吗?
由于
答案 0 :(得分:1)
添加深度参数
<?php
function listFolderFiles($dir, $deep = 0, $depth_limit = 1){
if($deep > $depth_limit ) return;
$ffs = scandir($dir);
echo '<ol>';
foreach($ffs as $ff){
if($ff != '.' && $ff != '..'){
echo '<li>'.$ff;
if(is_dir($dir.'/'.$ff)) listFolderFiles($dir.'/'.$ff, ++$deep);
echo '</li>';
}
}
echo '</ol>';
}
listFolderFiles('../../');
?>