PHP函数列出文件夹和文件,但检测文件夹或文件的时间

时间:2014-11-02 03:56:33

标签: php

如何编辑以下功能......

只允许链接文件,文件夹是否为h1标签?

例如,我想要的是输出

<h1>folder name</h1>
<a href="#">File.txt</a>
<a href="#">File.txt</a>
<a href="#">File.txt</a>
<h1>folder name</h1>
<a href="#">File.txt</a>
<a href="#">File.txt</a>
<a href="#">File.txt</a>

以下是我发现需要编辑的另一个Stackoverflow答案的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>';
}

我不确定如何“检测”$ ff变量是文件夹还是文件?

4 个答案:

答案 0 :(得分:1)

这对你有用! Directorys位于h1,文件位于a个标签:

(我正在使用功能is_dir进行检查,如果它是一个目录,如果它是我在h1输出名称,否则输入{{1} }标签)

a

如果你不想在列表中使用它,请使用:

<?php
    function listFolderFiles($dir){
        $ffs = scandir($dir);
        echo '<ol>';
            foreach($ffs as $ff){
                if($ff != '.' && $ff != '..'){
                    echo '<li>';

                        if(is_dir($dir.'/'.$ff))
                            echo "<h1>" . $ff . "</h1>";
                        else
                            echo "<a href=\"#\">" . $ff . "</a><br />";

                        if(is_dir($dir.'/'.$ff)) listFolderFiles($dir.'/'.$ff);
                    echo '</li>';
                }
            }
        echo '</ol>';
    }   


?>

答案 1 :(得分:1)

使用Spl

 $dir = new FilesystemIterator( __DIR__, FilesystemIterator::SKIP_DOTS );
 foreach ($dir as $fileinfo) {
    if( !$fileinfo->isDir()){
        echo '<a href="#">'.$fileinfo->getFilename().'</a>';
    }else{
        echo '<h1>'.$fileinfo->getFilename().'</h1>';
    }
 }

尚未测试过。但它应该做的伎俩,这是OOP方式来做到这一点。好处是你可以绕过点的所有检查,如果你喜欢Windows上的“/”而不是“\”,那就有一个标志。

FilesystemIterator::UNIX_PATHS

标志是按位的,所以要使用多于一个你喜欢的。

$dir = new FilesystemIterator( __DIR__, FilesystemIterator::SKIP_DOTS |  FilesystemIterator::UNIX_PATHS );

答案 2 :(得分:0)

在此部分中,您需要修改:

// If $ff is a directory 
if(is_dir($dir.'/'.$ff)) {
        // This is where you echo the folder name
        echo '<h1>'.$ff.'</h1>';
        // This will list what's in the directory
        listFolderFiles($dir.'/'.$ff);
    }

答案 3 :(得分:0)

$dir = scandir('your path');
    foreach($dir as $d) {
        if(is_file($d)) {
            echo $d . ' is file<br>';
        } else if(is_dir($d)) {
            echo $d . ' is directory<br>';
        }
    }

只看php手册。