dalmariko
@dalmariko
Ни рыба ни мясо. Програмясо

Как сделать парсер файловой системы?

В общем нужно сделать отображение всех папок и файлов со вложенностью.
не могу понять что у меня не так.
Кто подскажет?
function catalog($catalog)
{
    if ($open = opendir($catalog)) {
        
        while (false !== ($get = readdir($open))) {
            if (is_dir($get) && $get != '.' && $get != '..')
            {
                catalog($get);
                echo "[ " . $get . " ]" . "<br>";
            }
            else if (is_file($get)) {echo $get . "<br>";}
           
        }
        
    }
}
catalog('путь к файлу');
  • Вопрос задан
  • 233 просмотра
Решения вопроса 1
Могу предложить альтернативное решение через итераторы:
function iterateDirectory($i)
{
    /** @var SplFileInfo $path */
    foreach ($i as $path) {
        if ($path->getBasename() === '..') {
            continue;
        }

        if ($path->isDir())
        {
            echo $path->getPath() . '<br>';
            iterateDirectory($path);
        }
        else
        {
            echo $path->getPathname() . '</br>';
        }
    }
}

$dir = '/var/log';
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir));

iterateDirectory($iterator);


В дальнейшем будет проще дорабатывать фильтрацию и учитывать особенности (например, симлинки)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы