带链接的有限目录和子目录列表

时间:2017-02-08 12:28:47

标签: php html css

我正在尝试列出目录和子目录(一级深)作为导航的一部分,但我无法弄清楚如何限制搜索的深度。

我想要实现的目标:

|- <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('../../'); ?>

哪个好,但它们不是链接,它进入子目录并列出其中的项目,但正如我之前所说,我希望它切断子目录而不是更深入。

有什么建议吗?

由于

1 个答案:

答案 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('../../'); 
?>