Извлечение и обработка содержимого директории в PHP

44a261e7 dde0 43df 870a 8367377a60e3 1 HTML

Работа с содержимым директорий в PHP — важная задача, которая часто встречается в веб-разработке. PHP предоставляет удобные встроенные функции для этой цели. Рассмотрим их использование и особенности на примере.

Список содержимого директории

Для извлечения содержимого текущего каталога используем магическую константу __DIR__, которая возвращает путь к директории файла, в котором она используется. Это значение передаем в функцию scandir() для получения списка файлов и директорий.

$rootDir = __DIR__; // __DIR__ = C:\xampp\htdocs\CodeWall или любой другой путь к текущему каталогу

$allFiles = array_diff(scandir($rootDir), [".", ".."]); // Удаляем ссылки на текущий и родительский каталоги: (".", "..")

print_r($allFiles);

Результат:

Array ( [2] => css [3] => img [4] => index.php [5] => js [6] => page1.php [7] => page2.php )

Сортировка файлов в алфавитном порядке

Если необходимо получить список файлов в алфавитном порядке, можно использовать второй параметр функции scandir(): 0 — по возрастанию (значение по умолчанию), 1 — по убыванию.

$rootDir = __DIR__;
$allFiles = array_diff(scandir($rootDir, 1), [".", ".."]);

print_r($allFiles);

Результат:

Array ( [0] => page2.php [1] => page1.php [2] => js [3] => index.php [4] => img [5] => css )

Начиная с версии PHP 5.4.0, для второго параметра функции scandir() введены константы: SCANDIR_SORT_ASCENDING (по возрастанию, по умолчанию), SCANDIR_SORT_DESCENDING (по убыванию), SCANDIR_SORT_NONE (без сортировки).

Вывод списка всех файлов, включая вложенные директории

Для вывода списка файлов текущей и вложенных директорий выполним следующие действия:

  1. Извлечем содержимое текущей директории.
  2. В цикле проверим все элементы массива, чтобы найти директории.
  3. Извлечем список файлов из найденных директорий.

Пример решения для одного уровня вложенности:

$rootDir = __DIR__;

$currentDirectoryItems = array_diff(scandir($rootDir), [".", ".."]);

$allFiles = [];
foreach ($currentDirectoryItems as $item) {
$allFiles[] = $item;

if (is_dir($rootDir . "/" . $item)) { // Проверяем, является ли элемент директорией
$allFiles[] = array_diff(scandir($rootDir . "/" . $item), [".", ".."]);
}
}

print_r($allFiles);

Результат:

Array (
[0] => page2.php
[1] => page1.php
[2] => js
[3] => Array ( [2] => bootstrap.js [3] => jquery-1.10.2.js )
[4] => index.php
[5] => img
[6] => Array ( [2] => img1.jpg [3] => img2.jpg )
[7] => css
[8] => Array ( [2] => Site.css [3] => bootstrap.css )
)

Заключение

Функция scandir() значительно упрощает работу с содержимым директорий в PHP. Она позволяет легко извлечь список файлов и директорий, сортировать их и даже обрабатывать вложенные директории. Важно внимательно изучать документацию и использовать возможности PHP максимально эффективно.

Оцените статью