Створення папки php
Список папок, додавання папки, сортування
Сьогодні ми розберемо створення папок і створення списку папок. На самому початку давайте розберемо порядок розбору тим, вибачте за тавтологію.
Ми поговоримо на початку про функції, які вирішать верхні два завдання. А вже потім перейдемо до самому цікавому - застосуванні в нашому движку на файлах.
1. Як створити папку
2. Отримати список папок
3. Елемент движка, створення папки + редагування списку папок, сортування папок за алфавітом, умови створення папок.
Як створити папку?
Для створення папки будемо використовувати функцію «mkdir». За замовчуванням функція «mkdir» створює з правами 0777, якщо вам потрібно поставити свої права, то потрібно використовувати таку конструкцію:
Що потрібно занть при роботі з цією функцією? ТО, що вона повертає при успішній роботі TRUE і інакше FALSE, у функції є 4 параметра, про які ми, тут не будемо заглиблюватися - про один з параметрів ми сказали це «mode» - права (0700).
Для знаходження абсолютного шляху до папки використовуйте конструкцію:
Що означає - корневцю папку. Соотвественно «путь_до_папкі» - це шлях від кореневої папки.
Разом у вас повинно вийти
$ Put = $ home. "Путь_до_папкі / названіе_создаваемой_папкі"; // шлях до папки
Для того, щоб не створювати безліч папок з однаковими назвами перевіряйте чи є папка з такою назвою
echo "Папка вже існує";
тут система освіти папки
Отримати список папок?
Ми вже торкалися теми отримання списку папок, тому вам потрібно почитати тут. Там стосується питання отримання файлів, але вона може бути застосована і для отримання списку папок. Для того щоб функція вибирала папки, в ній потрібно поставити умову і фільтри, щоб відкидала файли, а залишала тільки папки.
Створення папки + редагування списку папок
Звичайно, деякі скрипти ще трохи недопрацьовані і сирі, але ж я взагалі перший раз все це роблю, тому - знижка 99%.
Повернемося до наших баранів, вірніше до створення і редагування папок.
Ми сумісний два скрін:
Де ми можемо бачити, що вибираємо папку в кореневій папці, якщо нам потрібно зробити файл в ній, то в другому стовпці нічого не чіпаємо, там повинна залишитися порожнеча, якщо ж ми хочемо зробити файл в теці, то вибираємо другу папку. Ось і будемо розбиратися з цим списком папок, створювати нову папку, папку в папці, і фільтрувати за назвою!

Погнали! Дорога буде довгою!
Почнемо з алгоритму!
Ми можемо взяти функцію, про яку йшла мова раніше, мається на увазі пункт №2. Але справа в тому, що там доведеться багато фільтрувати, тому, що в список потраплять не тільки файли, але і всі назви папок, які взагалі існують - це нам не підходить!
Ми будемо створювати список папок на txt файлі і для створення папки будемо використовувати функцію «mkdir»
Папки буде записуватися в файл за принципом:
1.Для папки в кореневій
2. І вкладена папка, подвійні двокрапки потрібні для сортування, далі буде зрозуміло.
І взагалі давайте повністю напишемо алгоритм.
Перевіримо на довжину назви папки (порахуємо кількість символів в слові) і зробимо умова не менше 5 і не більше 15.
Тут звертаю вашу увагу на те, що функція str_split не працює з кирилицею, тому змінна $ new_folder (назва нової папки) вже перегнали в латиницю.
Ну і тут зовсім просто думаю, що ви і так зрозуміли, перегнали нашу папку в масив і порахували кількість осередків - це перший рядок, ну і далі зробимо відповідні умови.
if ($ new_folder_count 15)
echo 'Папка не може бути більше 15 букв';
Далі зробимо подвійну перевірку, спершу перевіримо є збіги папки і масиву (списку папок), а потім нову папку на збіг у цьому ж масиві.
Для чого потрібна подвійна перевірка. Двох назв папок не може бути! І мала частина папки не може бути частиною великої папки інакше скрипт не працюватиме.
Отримаємо дані в змінну
Всі букви зробимо малими
Далі з нашого списку потрібно зробити один рядок, замінимо всі подвійні двокрапки (: :) і переноси терміни (\ n), на кому, і потім розіб'ємо даний рядок (explode) по коми на масив.
І далі будемо перебирати збіг (strops) нової папки до масиву. Якщо збіг знайдено, то створюємо змінну $ true. І виводимо повідомлення якщо така змінна існує.
$ Zamena = preg_replace ( "/ :: /", ',', $ file_line_strtolower);
$ Zamena = preg_replace ( "/ \ n /", ',', $ zamena);
$ New_expl = explode ( ',', $ zamena);
for ($ i = 0; $ i if (@strpos ($ new_folder, $ new_expl [$ i])! == false) echo 'Така папка існує Далі перевіряємо в зворотну сторону if (strpos ($ file_line_strtolower, $ new_folder) == false) З перевіркою в файлі наявності Нова нашої папки перевірили, тепер потрібно перевірити, а чи є така папці в реальності, хіба мало що. Може, як у моєму випадку ви збираєтеся використовувати даний скрипт для використання вже на сайті, де є вже безліч папок. Візьмемо абсолютний шлях до папки і перевіримо чи є вона .. (file_exists) $ Put = $ home. $ New_folder; // echo $ put; $ Put = $ home. $ Poisk. '/'. $ New_folder; // echo $ put; echo "Папка вже існує"; Далі створюємо папку з правами 0777 if (@mkdir ($ put, 0777, true)) echo "Папка зроблена"; Далі буде ще більше коду і я не буду на все докладно зупинятися, а пробіжуся лише швиденько. (Ну наскільки це вийде, звичайно) Отримаємо дані з файлу в масив Запис про нову папці. Далі будемо створювати власне запис про нову папці в наш файл. У нас буде три варіанти створення запису про нову папці ... 1. Це створення папки в кореневій папці виду: Якщо $ poisk порожня, мається на увазі в виборі папок на верхньому скріншоті ми вибрали в першому стовпці порожнечу. Додамо до основного масиву ($ file) запис ($ new_folder. ". \ N");) Далі відсортуємо все в нашому масиві (sort) і поставили прапори, для того, щоб не звертати увагу на регістр. Далі перетворимо наш масив в рядок (implode) і власне запісшем в наш файл (file_put_contents) if (empty ($ poisk)) // ЯКЩО ПОТРІБНО ЗРОБИТИ ЗАПИС ПРО НОВУ папки ПЕРШОГО РІВНЯ array_push ($ file, $ new_folder. ". \ n"); // сортуємо НЕЗАЛЕЖНО ВІД РЕГІСТРА. sort ($ file, SORT_NATURAL | SORT_FLAG_CASE); // print_r ($ file); // echo ' $ End = implode ( "", $ file); // echo $ end; 2. Для папок другого рівня. І тут буде два алгоритму, які трохи відрізнятимуться .. 2.а.Когда папка в кореневій папці порожня і вид папки буде такою: Спочатку для двох варіантів перевіримо обрана чи в першому стовпці папка (вірніше ми це вже зробили трохи вище (if (empty ($ poisk))) і перед продовженням ставимо "else"). Будемо створювати папку другого рівня і впишемо її між двома двокрапкою. $ Poisk - це шукана папка в списку, розкладемо масив (список) на рядки і в кожному рядку будемо шукати нашу папку, щоб зробити цю нову запис про нову папці. for ($ i = 0; $ i if (@strpos ($ line, $ poisk)! == false) Розіб'ємо знайдену рядок в масив по разделителю подвійних двокрапок (: :) $ New_line = explode ( '::', $ line); // ЯКЩО НІ папки в папку Т.Є. $ new_line [1] -Нехай І далі зробимо розгалуження перевіримо в знайденої рядку що між двома двокрапкою, якщо порожнеча, то: Далі зберемо новий рядок, у нас в $ new_line [0] лежить назва існуючої папки додамо до неї нову папку, після чого замінимо (preg_replace) стару рядок на нову і запишемо в наш файл. Оскільки ми не порушували порядок папок, то і сортувати тут не будемо! $ End = preg_replace ( "/ $ line /", $ line_new, $ file_line); $ Array = explode ( "\ n", $ end); 2.б.Корневая папка існує, і папка (або папки вже) всередині є. (Папки другого рівня записуємо через кому (це буде нашим другим роздільником.)) Чим варіант 2.a. відрізняється від 2.б. Лише тим, що якщо папка (папки другого рівня) вже існує, до змінної додаємо нашу нову папку $ new_folder, далі розіб'ємося її в масив (explode), далі відсортуємо (sort). Ну і далі теж саме, що і в варіанті 2.a ... $ New_line [1] = $ new_line [1]. ','. $ New_folder; // ЯКЩО Є папки в папку Т.Є. $ new_line [1] - не пустити $ Array = explode ( ',', $ new_line [1]); sort ($ array, SORT_NATURAL | SORT_FLAG_CASE); // print_r ($ array); $ Text = implode ( ',', $ array); // echo $ text; $ End = preg_replace ( "/ $ line /", $ line_new, $ file_line);
або ви використовуєте частина папки для створення нової папки. ';
';