Розширення архіву 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
Рис.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
Демо-додаток цієї частини (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!
Малюнок 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!
Малюнок 7. Початковий вміст archive2.zip
Таку програму (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 архівами.