opendir — php динамически открываемый многоуровневый каталог с использованием функции open_dir ()

Я взял этот сайт на управление. бывший разработчик использовал opendir (), который открывает только один уровень, прежде чем получить файлы в папке. Я хотел бы создавать многоуровневые папки перед окончательными файлами. Я создал подпапки на сервере, но мне нужно изменить код, чтобы динамически распознавать подпапки как папки, а не как файлы.

 if ($handle = opendir("parentfolder/".$pageid.'/')) {
$list = array();
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
$list[] = "$file\n";
}
}
rsort($list);
$clength =  count($list);
for($x = 0; $x <$clength; $x++){
$pubFolders .= "<a href='".$maindomain."/reports/".$list[$x]."' class='imagefolders'><img src='".$maindomain."/images/icons/image.png' alt=''/><br>".$list[$x]."</a>";
}
$data = $data.$pubFolders;
closedir($handle);
}

0

Решение

использование glob() с GLOB_ONLYDIR; Вот некоторые примеры функций:

function findDirectories($rootPath) {
$directories = array();
foreach (glob($rootPath . "/*", GLOB_ONLYDIR) as $directory) {
$directories[] = $directory;
}
return $directories;
}

function findFiles($rootPath, $extension) {
$files = array();
foreach (glob($rootPath . "/*.$extension") as $file) {
$files[] = $file;
}
return $files;
}

function findFilesRecursive($rootPath,$extension) {
$files = findFiles($rootPath,$extension);
$directories = findDirectories($rootPath);
if (!empty($directories)) {
foreach ($directories as $key=>$directory) {
$foundFiles = findFilesRecursive($directory,$extension);
foreach ($foundFiles as $foundFile) {
$files[] = $foundFile;
}
}
}
return $files;
}

Если вам не нужно определять конкретные расширения, просто введите * как $extension параметр.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]