在PHP中显示文件夹和文件,然后在文件夹中导航

时间:2018-10-08 11:11:59

标签: php

你好,我是一个寻求大师们帮助的门徒。我想使用PHP浏览文件夹,这是我的代码:

foreach (glob ("folderswithsubfoldersandfilesinit") as $path) {
  $file = basename($path);
  echo '<ul><a href="'.$path.'">'.$file.'</a></ul>';
}

上面的代码将显示指定文件夹中的文件。如果其中的某些项目是子文件夹怎么办?如果我想单击子文件夹并查看其中的文件,我将添加什么代码?我真的需要帮助谢谢。

3 个答案:

答案 0 :(得分:1)

使用scandir代替glob

foreach (scandir("folderswithsubfoldersandfilesinit") as $path) {
$file = basename($path);
echo '<ul><a href="'.$path.'">'.$file.'</a></ul>';
}

答案 1 :(得分:0)

使用is_dir php函数

$dirPath = '/your/start/directory';
if(isset($_GET['dir']) {
    $dirPath = $_GET['dir'];
}
foreach (glob ($dirPath) as $path) {
  $file = basename($path);
  if(is_dir($path)) {
     echo "<a href='?dir=$path'>$file</a>";
  } else {
     echo 'file: ' . $file;
  }
}

我认为您可以将echo directoryecho file替换为所需的html代码,以处理文件。 ps。我无法为您编写完整的代码,因为我认为用于学习广告的stackoverflow有助于入门开发人员。

答案 2 :(得分:0)

递归函数表示调用自身的函数,这是解析目录之类的树结构的正确方法。
这是一个示例:

const ROOT_DIR = "C:\\mydir";

print_files_of_dir( ROOT_DIR );

function print_files_of_dir( $dir ) {
    $files_and_dirs = scandir( $dir );

    foreach( $files_and_dirs as  $file_or_dir ) {
        if ( $file_or_dir === '.' || $file_or_dir === '..' ) {
            continue;
        }

        $full_path = $dir . DIRECTORY_SEPARATOR . $file_or_dir;

        if ( is_dir( $full_path ) ) {
            print_files_of_dir( $full_path );
        }
        else {
            echo $full_path . '<br>';
        }
    }
}

您可以看到函数print_files_of_dir会打印目录的所有文件,并且在找到子目录时会为该子目录调用它自己。
这样整个树都可以解析了。
希望能解决您的问题。
吉安卡洛