PHP opendir () для отображения только списков

Я хотел бы использовать opendir (), чтобы перечислять только папки в определенной папке (например, / www / site /). Я также хотел бы исключить файлы из списка также в. и «..», которые отображаются в листинге linux. Как мне это сделать?

Ознакомьтесь с документами PHP для readdir () . Это пример для этого.

Для полноты:

<?php if ($handle = opendir('.')) { $blacklist = array('.', '..', 'somedir', 'somefile.php'); while (false !== ($file = readdir($handle))) { if (!in_array($file, $blacklist)) { echo "$file\n"; } } closedir($handle); } ?> 

Просто измените opendir('.') свой каталог, то есть opendir('/www/sites/') и обновите $blacklist чтобы включить имена файлов или каталога, который вы не хотите выводить.

 foreach(glob('directory/*', GLOB_ONLYDIR) as $dir) { $dir = str_replace('directory/', '', $dir); echo $dir; } 

Вы можете просто использовать glob с GLOB_ONLYDIR, а затем фильтровать приведенные каталоги

 function scandir_nofolders($d) { return array_filter(scandir($d), function ($f) use($d) { return ! is_dir($d . DIRECTORY_SEPARATOR . $f); }); } 

Эта функция возвращает массив, который вы можете перебирать или хранить где-то, что составляет 99,37% всех программистов, использующих opendir .

Список только папок (каталогов):

 <?php $Mydir = ''; ### OR MAKE IT 'yourdirectory/'; foreach(glob($Mydir.'*', GLOB_ONLYDIR) as $dir) { $dir = str_replace($Mydir, '', $dir); echo $dir; } ?> 

Попробуйте это с помощью функции glob('*')

  <?php $dirs = array_filter(glob('*'), 'is_dir'); $i = 1; foreach ($dirs as $value) { echo $i . '. &nbsp; <a href = "http://localhost/' . $value . '" target = "_blank">' . $value . '</a><br>'; $i++; } ?> 

Над кодом работал для меня для списков папок в текущем каталоге, и я разработал код для открытия каждой папки на новой вкладке в том же браузере. Это показывает только каталоги.

Также можно использовать в формах для создания раскрывающихся имен папок (здесь это папка с изображениями). Обеспечивает загрузку пользователем изображения в нужную папку 🙂

 <select name="imgfolder"> <option value="genimage">General Image</option> <?php $Mydir = '../images/'; // use 'anydirectory_of_your_choice/'; foreach(glob($Mydir.'*', GLOB_ONLYDIR) as $dir) { $dirname = basename($dir) ; echo '<option value="' . $dirname . '">' . $dirname . '</option>' ; } ?> </select>