- Дерево всех файлов php
- Дерево всех файлов php
- Сортировка всех папок и файлов сайта для дерева.
- Папки :
- Вторая функция для создания дерева директорий и файлов.
- Живой пример вывода всего дерева папок и файлов сайта
- Как пользоваться функцией построения дерева файлов и папок?
- Обозначения дерева файлов и папок?
- Дерево директории на PHP
- Комментарии ( 18 ):
- Дерево файлов и директорий
Дерево всех файлов php
Nickolay.info. PHP. Построение дерева каталогов на PHP 5 и PHP 4
В PHP5 появилась функция scandir , получающая список файлов и каталогов, расположенных по указанному пути. Применение этой функции плюс рекурсии позволяет легко написать скрипт для построения дерева каталогов на PHP:
return $c; > function getsize ($bytes) < if ($bytes<1024) return $bytes.' байт'; else if ($bytes<1048576) return round ($bytes/1024,2).' Кб'; else if ($bytes<1073741824) return round ($bytes/1048576,2).' Мб'; else return round ($bytes/1073741824,2).' Гб'; >function showdir($folder,$begin) < $files = scandir($folder); foreach($files as $file) < if ($file=='.' or $file=='..') continue; $f0=$folder.'/'.$file; if (is_dir($f0)) < echo ''."\n"; showdir($f0,$begin.' '); > > > echo ' '; $dir='./'; echo ' '.$begin.$file.' '.$begin.getsize(sizedir($folder.'/'.$file)).' '."\n"; //echo '
'; echo ''; ?>'; showdir($dir,''); echo ' . '.getsize(sizedir($dir)).'
Скрипт может выполняться довольно долго, если в папке $dir много вложенных папок и файлов (в примере дерево смотрится от корня сервера!). Для «симметричности» всё выводится моноширинным шрифтом Courier New , а чтобы избежать огромных чисел (размеры папок-то считаются в байтах), метод getsize переводит размер в байтах в Кб или Мб, оставляя байты только для файлов меньше 1 Кб.
Если нужно дополнительно показать размер самой папки $dir , от которой строится дерево, раскомментарьте одну строчку в листинге:
Если нужно, чтобы работало на PHP4, можно просто добавить в листинг свою scandir :
Пример того, что построил скрипт для небольшой папки на локалхосте:
Дерево всех файлов php
Для вывода всего дерева директорий и файлов. нам потребуется отсортировать папки отдельно — файлы отдельно!
Вчера специально посмотрел в интернете — есть ли вообще, что-то похожее на нормальное дерево всех файлов на сайте! Оказалось, как часто бывает — какой-то полный отстой!
Поэтому, я напишу всё самостоятельно, раз нет готового решения.
Но первым шагом. нам нужно подготовить почву для сортировки и выводу всего дерева директорий, поддиректорий и файлов!
Сперва получим все папки первого уровня с помощью scandir:
После удаления восстановим нумерацию
Поскольку отсортировать отдельно названия папок и файлов простым способом не получится — сделаем это с помощью цикла.
Сортировка всех папок и файлов сайта для дерева.
После того, как мы подготовили массив для цикла
Выше цикла поставим создание двух массивов в цикле. один с папками($new_array), другой с файлами($new_array2):
Внутри цикла создадим условие, каждая новая строка с новым расширением, все расширения какие вспомнил в этом условии, не буду выводить все строки. Как добавить . если у вас есть како-то новое разрешение, просто копируйте любую строку(кроме последней(там отсутствует «or») в условии, измените разрешение и вставьте в условие.
if(
substr_count( $array[$i] , ‘.dat’) or
.
substr_count( $array[$i] , ‘.xml’) or
substr_count( $array[$i] , ‘.htaccess’))
$new_array2[] = $array[$i];
>
Папки :
Что не попало в первый массив попадет во второй(так, что не беспокойтесь, файлы выведутся все!):
И в самом конце вернем(return) соединим получившиеся два массива с помощью array_merge , вначале папки($new_array):
Вторая функция для создания дерева директорий и файлов.
Если первую функцию можно было объяснить и понять неподготовленному человеку, то вот вторая функция, сложна для понимания тем, что она вызывается несколько раз.
И в том числе в цикле foreach
Короче.
Данная функция проберется по всем каталогам вашего сайта и выведет всё, что у вас есть на сайте!
Я думаю — этого будет достаточно для описания этой функции.
Да. И редкий случай, когда применил тег details(это один из вариантов — открыть/скрыть блок, только на html) — посмотрим, что из этого получится.
Живой пример вывода всего дерева папок и файлов сайта
Стили. думаю рассказывать вообще смысла нет, как получилось. так получилось.
Живой пример вывода всего дерева сайта. Естественно, что дерево всего сайта https://dwweb.ru я вам не покажу, у меня есть для таких целей поддомен. Разместим весь код php + html + css в файле «index.php»
Как пользоваться функцией построения дерева файлов и папок?
Всё содержимое архива, бросаем в любое место вашего сайта.
И видим, что мы получили дерево файлов и папок:
Обозначения дерева файлов и папок?
Если цвет синий — значит папка закрытая.
Если цвет коричневый — папка открыта.
Если видите знак ✖ — это файл, конечная точка дерева.
Дерево директории на PHP
Недавно меня попросили написать скрипт, который выводит дерево директории на PHP. Я решил, что это будет интересно многим, поэтому написал подобный скрипт, который сейчас продемонстрирую.
function showTree($folder, $space) /* Получаем полный список файлов и каталогов внутри $folder */
$files = scandir($folder);
foreach($files as $file) /* Отбрасываем текущий и родительский каталог */
if (($file == ‘.’) || ($file == ‘..’)) continue;
$f0 = $folder.’/’.$file; //Получаем полный путь к файлу
/* Если это директория */
if (is_dir($f0)) /* Выводим, делая заданный отступ, название директории */
echo $space.$file.»
«;
/* С помощью рекурсии выводим содержимое полученной директории */
showTree($f0, $space.’ ‘);
>
/* Если это файл, то просто выводим название файла */
else echo $space.$file.»
«;
>
>
/* Запускаем функцию для текущего каталога */
showTree(«./», «»);
?>
Код тщательно прокомментирован, поэтому вопросов возникнуть не должно. Как видите, всё построено вокруг рекурсии, и каждый каталог рекурсивно обследуется. А когда полностью обследован (а также все его подкаталоги), то возвращаемся в цикл и двигаемся дальше. Такой процесс происходит абсолютно с каждым каталогом, который попадается на пути.
Я Вам предлагаю найти у себя на компьютере сайт, где много директорий, поддиректорий и файлов и испытать данный PHP-скрипт, построив дерево корневой директории.
Создано 04.11.2011 13:23:02
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
- Кнопка:
Она выглядит вот так: - Текстовая ссылка:
Она выглядит вот так: Как создать свой сайт - BB-код ссылки для форумов (например, можете поставить её в подписи):
Комментарии ( 18 ):
Классный скрипт, вот только почему-то скан доходит только до первой глубины вложенности каталогов, а подкаталаги уже не сканирует(
Поменяйте строку if (is_dir($file)) на if (is_dir($f0)) и будет Вам счастье!
Спасибо большое! Подправил.
А может вы всё-таки напишите скрипт древовидных комментариев ? Или вы не хотите писать потому что есть статья?
Нет, пока писать скрипт времени нет.
Ясно, а в будушем напишите?
Мне тоже интересно узнать, как выводить древовидные комментарии, т.е. как у вас, при использовании кнопки/ссылки «Ответить» рядом с комментарием. С добавлением комментария — проблем никаких, как и с выводом; вот что я действительно не могу понять, как заставить комментарий «сместиться» в сторону, при помощи PHP.
Это не при помощи PHP, а при помощи CSS. А PHP лишь генерирует соответствующий HTML-код, который ничего не смещает сам по себе.
То есть, нужно заранее написать стиль для смещения, и шаблон, в который PHP будет загружать комментарий, и присваивать соответствующий стиль? Или же нужен всего один стиль, а при помощи PHP мы должны вставить шаблон комментария перед закрывающим тегом, чтобы получились древовидные комментарии? Я правильно вас понимаю? Если нет, тогда я в отчаянии. 🙂
Дерево файлов и директорий
Напишем простой скрипт, с помощью которого можно реализовать вывод дерева файлов и директорий.
Приведу один из многих примеров, для которых необходимо создать данное дерево. Например, вы создаете свой проект, и хотите полностью проверить и оптимизировать все существующие файлы. Для этого выводим список всех файлов, распечатываем, и после оптимизации отдельных файлов – обводим их на бумаге. Данная процедура значительно облегчает организацию работы и проверки.
Работа скрипта подробно объяснена в комментариях к коду:
function viewTree( $folder, $space ) < // Получаем полный список файлов и каталогов внутри $folder $files = scandir( $folder ); foreach( $files as $file ) < // Отбрасываем текущий и родительский каталог if ( ( $file == '.' ) || ( $file == '..' ) ) continue; // Получаем полный путь к файлу $path = $folder.'/'.$file; // Если это директория if ( is_dir( $path ) ) < // Выводим название директории, делая заданный отступ echo ''.$space.$file."
"; // С помощью рекурсии выводим содержание полученной директории viewTree( $path, $space.' ' ); > // Если это файл, то просто выводим название файла else < echo $space.$file."
"; > > > // Запускаем функцию для текущего каталога viewTree( $_SERVER['DOCUMENT_ROOT'].'/', '' );
А ещё по теме
Написание своего плагина для WordPress. Часть 4. Защита плагина с помощью nonce
В предыдущих частях были описаны создание страницы плагина в админ панели и работа с базой…
Функция Feof
Функция Feof проверяет, достигнут ли конец файла. bool feof( resource $handle ) Параметр Handle являет…
Функция Decbin
Функция Decbin переводит число из десятичной системы счисления в двоичную. string decbin( int $number )…
Преобразование байтов в килобайты, мегабайты, гигабайты, терабайты
Очень часто необходимо преобразовать какую-то величину (размер файла, памяти) в человеческий вид. Значение 1 Гб…
Двоичные данные (Boolean)
Тип Boolean выражает истинность значения. Он может быть либо TRUE, либо FALSE. Обе они регистронезависимы.…
Директива Upload_max_filesize
Директива Upload_max_filesize задает максимальный размер закачиваемого файла. upload_max_filesize integer Значение директивы измеряется байтами. Также доступны…