2011-10-19 73 views
0

我的問題是一個提取目錄內容的php頁面。
正如您在下面的代碼片段中看到的,路徑通過GET傳遞。
我第一次打電話頁面正確地讀取所有內容,但如果你剛剛讀取的文件夾包含一個子目錄,它就被識別爲一個文件。
您有任何建議或解決方案嗎?
感謝在PHP中區分文件和目錄

<?php 
    $path = $_GET['dir']; 
    function createDir($path) { 
     if ($handle = opendir($path)) { 
      echo "<ul>"; 
      while (false !== ($file = readdir($handle))) { 
       if (is_dir($path . $file) && $file != '.' && $file != '..') 
        printSubDir($file, $path, $queue); 
       else if ($file != '.' && $file != '..') 
        $queue[] = $file; 
      } 

      printQueue($queue, $path); 
      echo "</ul>"; 
     } 
    } 

    function printQueue($queue, $path) { 
     foreach ($queue as $file) { 
      printFile($file, $path); 
     } 
    } 

    function printFile($file, $path) { 
     echo "<li>"; 
      // print a file 
     echo "</li>"; 
    } 

    function printSubDir($dir, $path) { 
     echo "<li>"; 
      // print a directory 
     echo "</li>"; 
    } 

    createDir($path); 
?> 

回答

3

您可以使用DirectoryIterator輕鬆實現這一點:

$oIterator = new DirectoryIterator(dirname(__FILE__)); 
foreach ($oIterator as $oFileInfo) { 

    // Either . or .. 
    if ($oFileinfo->isDot()) { 

    } 

    // A directory 
    if ($oFileInfo->isDir()) { 

    } 
} 
+0

解決方案的工作很好,但isDot不起作用。我試着用if(($ oFileinfo!=「。」)&&($ oFileinfo!=「..」)),但是「。」和「..」目錄也提取..任何解決方案? – alegig

+0

對不起,我解決了...非常感謝! – alegig