2011-12-19 4 views
0

Как я могу перечислить все файлы в каталоге. Я хочу только файлы в корневом каталоге. Если в корневом каталоге есть какой-либо каталог, я хочу пропустить эти каталоги и файлы в них.
Теперь я использую этот кодКак я могу перечислить файлы в каталоге, используя php

$folderPath = file_directory_path().'/lexalytics/'; 
    if ($handle = opendir($folderPath)) { 
     $result .= '<div><ul>'; 
     while (false !== ($entry = readdir($handle))) { 
      if ($entry != "." && $entry != "..") { 
       $result .= "<li><a href=../".$folderPath.$entry.">".$entry."</a>\n</li>"; 
      } 
     } 
     $result .= '</ul></div>'; 
     closedir($handle); 
    } 

Но перечислены подкаталоги и файлы в них. Как это можно избежать? Pls помочь мне

+0

В исходной функции есть возможность для рекурсивного поиска. Просто не делайте рекурсивный поиск. – Bakudan

+0

Это не PHP5. – Flukey

ответ

0

Попробуйте этот код

$folderPath = file_directory_path().'/lexalytics/'; 
    $handle = @opendir($folderPath) or die("Unable to open $path"); 
    $result .= '<div><ul>'; 
    // Loop through the files 
    while ($entry = @readdir($handle)) { 
     if(is_file($folderPath.$entry)) { 
      $result .= "<li><a href=../".$folderPath.$entry.">".$entry."</a>\n</li>"; 
     } 
    } 
    $result .= '</ul></div>'; 
    closedir($handle); 
+1

Почему вы используете символ «@» для подавления ошибок от функций? Почему вы используете die вместо того, чтобы бросать исключение? Ужасный код. – Flukey

1
 
$path = "your-path"; 

    // Open the folder 
    $dir_handle = @opendir($path) or die("Unable to open $path"); 

    // Loop through the files 
    while ($file = readdir($dir_handle)) { 

    if($file == "." || $file == ".." || $file == "index.php") 

     continue; 
     echo "<a href=\"$file\">$file</a><br />"; 

    } 
    // Close 
    closedir($dir_handle); 
+0

это также печатает имя подкаталога –

3

Пожалуйста, используйте PHP5s новый DirectoryIterator класс:

Это только список файлов и исключающие папки:

$directory = file_directory_path().'/lexalytics/'; 
$filenames = array(); 
$iterator = new DirectoryIterator($directory); 
foreach ($iterator as $fileinfo) { 
    if ($fileinfo->isFile()) { 
     $filenames[$fileinfo->getMTime()] = $fileinfo->getFilename(); 
    } 
} 
Смежные вопросы