Я хотел бы использовать 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 . '. <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>