Я хотел бы использовать opendir() для отображения только папок в определенной папке (например,/www/site/). Я также хотел бы исключить файлы из списка также в. и "..", которые отображаются в листинге linux. Как я могу это сделать?
PHP opendir() для отображения только списков
Ответ 1
Ознакомьтесь с 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
, чтобы включить имена файлов или каталога, которые вы не хотите выводить.
Ответ 2
foreach(glob('directory/*', GLOB_ONLYDIR) as $dir) {
$dir = str_replace('directory/', '', $dir);
echo $dir;
}
Вы можете использовать просто glob с GLOB_ONLYDIR, а затем фильтровать приведенные каталоги
Ответ 3
function scandir_nofolders($d) {
return array_filter(scandir($d), function ($f) use($d) {
return ! is_dir($d . DIRECTORY_SEPARATOR . $f);
});
}
Эта функция возвращает массив, который вы можете перебирать или хранить где-то, что составляет 99,37% всех программистов, использующих opendir
.
Ответ 4
Список только каталогов (каталогов):
<?php
$Mydir = ''; ### OR MAKE IT 'yourdirectory/';
foreach(glob($Mydir.'*', GLOB_ONLYDIR) as $dir) {
$dir = str_replace($Mydir, '', $dir);
echo $dir;
}
?>
Ответ 5
Попробуйте это с помощью функции 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++;
}
?>
Над кодом работал у меня для списков папок в текущем каталоге, и я разработал код для открытия каждой папки на новой вкладке в том же браузере. Это показывает только каталоги.
Ответ 6
Можно также использовать в формах для создания раскрывающихся имен папок (здесь это папка с изображениями). Обеспечивает загрузку пользователем изображения в нужную папку: -)
<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>