在PHP中显示文件夹和文件,然后浏览文件夹

在PHP中显示文件夹和文件,然后浏览文件夹,php,Php,你好,我是一名弟子,正在向大师寻求帮助。我想使用PHP浏览文件夹以下是我的代码: foreach (glob ("folderswithsubfoldersandfilesinit") as $path) { $file = basename($path); echo '<ul><a href="'.$path.'">'.$file.'</a></ul>'; } foreach(glob(“folderswithsubfoldersand

你好,我是一名弟子,正在向大师寻求帮助。我想使用PHP浏览文件夹以下是我的代码:

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

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

    使用
    is\u 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;
      }
    }
    
    $dirPath='/your/start/directory';
    if(isset($\u GET['dir'])){
    $dirPath=$_GET['dir'];
    }
    foreach(全局($dirPath)作为$path){
    $file=basename($path);
    if(is_dir($path)){
    回声“;
    }否则{
    回显“文件:”.$file;
    }
    }
    
    我认为您可以将
    echo目录
    echo文件
    替换为所需的html代码,以便处理您的文件。
    p、 我无法为您编写完整的代码,因为我认为stackoverflow学习广告有助于开发人员的起步。

    使用scandir而不是glob

    foreach (scandir("folderswithsubfoldersandfilesinit") as $path) {
    $file = basename($path);
    echo '<ul><a href="'.$path.'">'.$file.'</a></ul>';
    }
    
    foreach(scandir(“folderswithsubfoldersandfilesinit”)作为$path){
    $file=basename($path);
    回声“
      ”; }
      递归函数是指调用自身的函数,这是解析目录等树结构的正确方法。
      这是一个例子:

      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>';
              }
          }
      }
      
      const ROOT\u DIR=“C:\\mydir”;
      打印目录的目录文件(根目录);
      函数print\u files\u of\u dir($dir){
      $files_和_dirs=scandir($dir);
      foreach($files\u和\u dirs作为$file\u或\u dir){
      如果($file_或_dir=='.| |$file_或_dir==='.'){
      继续;
      }
      $full\u path=$dir.DIRECTORY\u分隔符。$file\u或\u dir;
      if(is_dir($full_path)){
      打印目录的文件($full\u path);
      }
      否则{
      回显$full_路径。“
      ”; } } }
      您可以看到,函数
      print\u files\u of\u dir
      打印一个dir的所有文件,当它找到一个子目录时,它会调用该子目录。
      这样就可以解析整个树。
      我希望它能解决你的问题。

      Giancarlo

      检查递归函数很抱歉,我真的不知道如何实现。我是PHP新手。我仍然不懂。你能给我一个例子,它列为链接吗?如果我单击该文件,它将下载该文件。如果我单击子文件夹,它将列出它的文件。感谢在我测试了你的代码之后,它仍然显示索引单击子文件夹后的x。我理解,感谢您的努力。我希望有人能知道我的问题的答案。如果该项目是子文件夹,该怎么办?如何设置子文件夹路径以列出其中的文件?在测试代码后,它仍然显示我单击子文件夹后的索引谢谢您的清晰和精确解释递归。我只想列出指定文件夹中的文件和文件夹,并将每个项目视为链接。如果是文件,它将下载。如果是子文件夹,它将列出子文件夹中的文件。fileA.doc我的代码将列出
      根目录下的所有文件。
      。您可以将其用作起点并替换ec用你自己的逻辑来解释。