Intereting Posts
PHP – упростить способ обработки массивов WooCommerce WordPress – примерная кнопка «Корзина» Не удается подключиться к PostgreSQL с помощью PHP pg_connect () Как добавить список выбора в форме контакта php Magento добавляет настраиваемое поле в адрес доставки и платежного адреса на одной странице Использовать компоненты Zend Framework без реальной структуры? Использование пользовательской функции в веточке PHPUnit: assertInstanceOf () не работает Шифрование данных POST – достаточно HTTPS? Вы знаете какие-либо популярные PHP-шаблоны для php, которые имеют концепцию текущего контекстного узла? Преобразовать html-таблицу Самый короткий способ проверить, содержит ли переменная положительное целое число с помощью PHP? получить одно значение элементов массива в php Как создать постоянную ссылку с именем месяца вместо использования monthnum? Получение данных во время цикла с использованием левого соединения

Обзор каталога рекурсивно и получить имя файла

Я должен сделать php-скрипт, который просматривает каталог с подкаталогом. Для каждого подкаталога (и, возможно, под-подкаталога) мне нужно получить имя файла и его родительские каталоги.

У вас есть простое решение для этого? благодаря

Поскольку мне приходилось создавать те же функциональные возможности для моего сайта, я отправлю свою функцию в качестве ссылки.

function recursiveFileSearch($path, $searchmask = "*") { $path = rtrim($path, '/'); $files = array(); if(is_array($searchmask)) { for($i = 0; $i < count($searchmask); $i++) { $files = array_merge($files, glob($path.'/'.$searchmask[$i])); } sort($files); } else { $files = glob($path.'/'.$searchmask); } $dirs = glob($path.'/*', GLOB_ONLYDIR); foreach($dirs as $dir) { if(is_dir($dir)) { $files = array_merge($files, recursiveFileSearch($dir, $searchmask)); } } sort($files); return $files; } 

Я не уверен на 100%, что вы просите, но если вы посмотрите на документацию scandir, первый комментарий имеет очень полезную функцию рекурсивного сканирования.

 <?php function dirToArray($dir) { $result = array(); $cdir = scandir($dir); foreach ($cdir as $key => $value) { if (!in_array($value,array(".",".."))) { if (is_dir($dir . DIRECTORY_SEPARATOR . $value)) { $result[$value] = dirToArray($dir . DIRECTORY_SEPARATOR . $value); } else { $result[] = $value; } } } return $result; } ?> 

Результаты будут иметь следующий формат.

 Array ( [subdir1] => Array ( [0] => file1.txt [subsubdir] => Array ( [0] => file2.txt [1] => file3.txt ) ) [subdir2] => Array ( [0] => file4.txt } )