Робота з zip архівами в php

Розширення архіву Zip в PHP використовується для роботи з Zip архівами і файлами, які в них містяться. Для використання цього розширення в PHP 5 необхідно активувати php_zip.dll всередині файлу php.ini. У цій статті ви дізнаєтеся про те, як працювати з файлами Zip архівів в PHP, використовуючи ряд PHP демо-додатків. Ви навчитеся: створювати Zip архіви;

Створення Zip архівів в PHP і додавання файлів

Для створення Zip архіву в PHP можна використовувати зумовлену константу ZIPARCHIVE :: CREATE; архів буде створений, якщо він ще не існує. (Для додавання файлів всередину архіву можна використовувати вищеописані методи addFile і addFromString.) Перше демо-додаток (add_file_from_string.php) створює (якщо такий ще не існує) або відкриває Zip архів archive1.zip, а після додає в нього файл, використовуючи метод addFromString ():

Тут код для add_file_from_string.php:

З результати виконання add_file_from_string.php ви також можете ознайомитися на рисунку 1.

Файловий текст test1.txt був успішно доданий у archive1.zip

Робота з zip архівами в php

Рис.1 The archive1.zip

bool ZipArchive :: addFile (string $ filename [, string $ localname]). додає файл в Zip-архів з даного шляху bool ZipArchive :: addEmptyDir (string $ dirname). додає порожню папку в архів.

Тут код для add_file_directory.php:

З результатом лістингу add_file_directory.php ви також можете ознайомитися на рисунку 2:

Малюнок 2. Характеристики об'єкта archive2.zip

Наступне демо-додаток служить для створення Zip архіву archive2.zip, який включає два файли: test3.txt і test4.txt. (Інформацію про те, як користуватися цим додатком, ви зможете знайти нижче.) Код для archive2.php:

Результат archive2.php. Ви також можете ознайомитися з результатами на рисунку 3: Файловий текст test3.txt успішно доданий в archive2.zip при використанні методу addFile Файловий текст test4.txt успішно доданий в archive2.zip при використанні методу addFromString method.

Робота з zip архівами в php

Витяг Zip архіву в PHP

Демо-додаток цієї частини (extract_archives.php) показує, як видаляти архіву в спеціальну папку, використовуючи метод extractTo (): bool ZipArchive :: extractTo (string $ destination [, mixed $ entries]). витягти вміст архіву.

Архіви archive1.zip і archive2.zip будуть вилучені в папку archive, як показано на рисунку 4. Код для extract_archives.php:

Результат extract_archives.php: archive1.zip і archive2.zip були вилучені в папку archive!

Робота з zip архівами в php

Малюнок 4. Вміст папки archive після вилучення archive1 і archive2

Наступне демо-додаток (extract_to_specified_folder.php) витягує вміст Zip архіву в спеціальну папку, використовуючи вищеописаний метод extractTo (). Код для extract_to_specified_folder.php:

Результат extract_to_specified_folder.php. Ви також можете ознайомитися з результатами на рисунку 5: Архів витягнутий в папку ZIP_extract!

Малюнок 5. Папка ZIP_extract з файлами archive1

З результатами лістингу filelist.php ви також можете ознайомитися з на рисунку 6: Файли test3.txt і test4.txt з архіву archive2.zip успішно вилучені в зазначений каталог ZIP_TEST!

Малюнок 6.Вибранние файли, витягнуті з archive2 в призначенні каталог ZIP_TEST

Отримання характеристик об'єкта на основі його індексу

Для отримання характеристик окремого файлу можна використовувати метод statIndex:

mixed ZipArchive :: statIndex (int $ index [, int $ flags]).

Наступне демо-додаток (statIndex.php) ітерірует список файлів в archive2.zip і друкує характеристики для кожного з об'єктів. Код для statIndex.php:

Результат лістингу 5.php:

Наступне демо-додаток (locate.php) також дозволяє отримувати характеристики файлу, за умови що archive1.zip містить цей файл. Метод locateName повертає індекс файлу в архіві і використовує визначену константу ZIPARCHIVE :: FL_NODIR, яка ігнорує компонент каталог. Прототип константи ZIPARCHIVE :: FL_NODIR:

mixed ZipArchive :: locateName (string $ name [, int $ flags])

Код для locate.php:

Результат лістингу locate.php:

Array ([name] => test2.txt [index] => 2 [crc] => -513033757 [size] => 50 [mtime] => 1269715222 [comp_size] => 49 [comp_method] => 8)

Видалити або перейменувати розмови Zip архівів в PHP

Щоб видалити чи перейменувати Zip архівів в PHP можна використовувати ім'я або індекс. Методи, якими можна скористатися для цієї мети, включають:

bool ZipArchive :: deleteIndex (int $ index) - Видаляє об'єкт в архіві, використовуючи індекс; bool ZipArchive :: deleteName (string $ name) - Видаляє об'єкт в архіві, використовуючи ім'я; bool ZipArchive :: renameIndex (int $ index. string $ newname) - перейменують об'єкт на основі індексу; bool ZipArchive :: renameName (string $ name. string $ newname) - перейменують об'єкт на основі імені.

Наступне демо-додаток (rename.php) використовує всі перераховані вище методи для перейменування файлу з "index = 3", як "renameByIndex.txt", і "test4.txt", як "renameByName.txt". Код для rename.php:

Результати лістингу rename.php. Ви також можете ознайомитися з результатами на рисунку 7 і рисунку 8: Файли успішно перейменовані в архіві archive2.zip!

Робота з zip архівами в php

Малюнок 7. Початковий вміст archive2.zip

Робота з zip архівами в php

Таку програму (delete.php) видаляє з archive2.zip файл з "index = 1" і текстовий файл renameByIndex.txt, використовуючи методи deleteIndex () і deleteName (). Код для delete.php:

У зв'язку з тим, що архів містив всього два файли і обидва були видалені, archive2.zip був також вилучений. Таку програму (add_text_files.php) ітерірует архівні файли і додає всі файли .txt з цього каталогу в text_archive.zip. Код для add_text_files.php:

Результати лістингу add_text_files.php: text_archive.zip успішно створений!

Малюнок 9. Угруповання всіх текстових файлів з поточного каталогу в новий архів text_archive.zip

висновок

Як ви, напевно, помітили, вивчаючи додатки, представлені в статті, працювати з розширенням архіву Zip в PHP досить просто і навіть забавно. Все, що від вас вимагається, це вміння поводитися з методами розширення. В цьому випадку ви з успіхом зможете здійснювати різні операції з Zip архівами.

Схожі статті