Вот кое-что для расширения:
function listFolders($folderPath, $homeFolder)
{
$folderPath = realpath($folderPath);
$homeFolder = realpath($homeFolder);
if(strpos($folderPath, $homeFolder) === 0) {
return glob("$folderPath/*", GLOB_ONLYDIR);
}
}
$dirs = listFolders('/home/gordon/code/php', '/home/gordon');
print_r($dirs);
Для $folderPath
вы передаете папку, из которой вы хотите вывести список каталогов.Для $homeFolder
перейдите в папку, которую вы хотите быть самой верхней папки.* * * * Используя оба пути, вы убедитесь, что они разрешены до абсолютных путей.Если $folderPath
ниже $homeFolder
, тогда строка $folderPath
будет начинаться и содержать всю строку $homeFolder
.Если это так, мы просто glob
всех каталогов в $folderPath
и возвращаем их абсолютные пути в массиве.
Чтобы получить относительный путь $folderPath
из $homeFolder
, просто сделайте
ltrim(str_replace('/home/gordon/', './', '/home/gordon/code/php/'), '/');
, который вернет ./code/php/
.
Если вы хотите сделать это с ООП, вас может заинтересовать SPL DirectoryIterator .