Php как распаковать архив zip

Содержание
  1. Работа с zip архивами в PHP: запаковка и распаковка файлов
  2. Запаковка файлов в zip
  3. Распаковка файлов из zip
  4. Распаковываем zip архив средствами PHP
  5. 5 последних уроков рубрики «PHP»
  6. Фильтрация данных с помощью zend-filter
  7. Контекстное экранирование с помощью zend-escaper
  8. Подключение Zend модулей к Expressive
  9. Совет: отправка информации в Google Analytics через API
  10. Подборка PHP песочниц
  11. ZIP в PHP (ZipArchive)
  12. Добавление файлов в архив
  13. Заархивировать директорию с содержимым
  14. Переименовать файл
  15. Если файл лежит в папке
  16. Удалить файл из архива
  17. Если файл лежит в папке
  18. Список файлов в архиве
  19. Извлечь весь архив
  20. Извлечь определенные файлы
  21. Извлечь файл в поток
  22. Распаковываем zip архив средствами PHP
  23. 5 последних уроков рубрики «PHP»
  24. Фильтрация данных с помощью zend-filter
  25. Контекстное экранирование с помощью zend-escaper
  26. Подключение Zend модулей к Expressive
  27. Совет: отправка информации в Google Analytics через API
  28. Подборка PHP песочниц

Работа с zip архивами в PHP: запаковка и распаковка файлов

Когда необходимо программно запаковать файлы в zip архив, используйте модуль — ZipArchive , который установлен практически на всех серверах вместе с PHP.

Для работы с модулем, используется одноименный класс – ZipArchive .

Запаковка файлов в zip

Пример показывает как запаковать все папки, подпапки и файлы в них с помощью ZipArchive .

/** * Create zip archive from specified folder. * * @param $source * @param $destination * @param bool $include_sourse * * @return string * * @ver 0.1 (kama) */ function zip_folder( $source, $destination, $include_sourse = true )< $source = str_replace( '\\', '/', rtrim( realpath( $source ), '/' ) ); if( ! file_exists( $source ) ) return 'Error: file not exists'; $zip = new ZipArchive(); if( ! $zip->open( $destination, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE ) ) return 'Error: ZipArchive not installed'; if( $include_sourse ) $zip->addEmptyDir( basename($source) ); if( is_file( $source ) )< $zip->addFile( $source ); > elseif( is_dir( $source ) ) < foreach( new RecursiveIteratorIterator( new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST ) as $file_path =>$file_obj )< // Ignore . | .. folders if( preg_match('~/[.]$~', $file_path) ) continue; $file_rel_path = str_replace( "$source/", '', $file_path ); if( $include_sourse ) $file_rel_path = basename($source) .'/'. $file_rel_path; if( is_dir( $file_path ) )< $zip->addEmptyDir( $file_rel_path ); > elseif( is_file( $file_path ) )< $zip->addFile( $file_path, $file_rel_path ); > > > $zip->close(); return 'Done'; >
$source = __DIR__ . '/wp-content'; $destination = __DIR__ . '/_'. basename($source) .'-'. date( 'd-m-Y' ) . '.zip'; echo zip_folder( $source, $destination );

Распаковка файлов из zip

Теперь, пример распаковки zip архива с помощью ZipArchive .

Читайте также:  Random split list python

function unzip_file( $file_path, $dest )< $zip = new ZipArchive; if( ! is_dir($dest) ) return 'Нет папки, куда распаковывать. '; // открываем архив if( true === $zip->open($file_path) ) < $zip->extractTo( $dest ); $zip->close(); return true; > else return ‘Произошла ошибка при распаковке архива’; > // использование $zipfile = ‘test.zip’; // путь до файла архива $pathdir = ‘test/’; // путь к папке, в которую будет распакован архив $done = unzip_file( $zipfile, $pathdir ); if( is_string($done) )

В WordPress для распаковки архивов есть специальные функция (работают только в админке) unzip_file()

Источник

Распаковываем zip архив средствами PHP

Сегодня мы рассмотрим небольшое продолжение одного из предыдущих уроков и продемонстрируем небольшой сниппет для распаковки ZIP архива.

Совсем недавно мы рассмотрели как создавать ZIP архив средствами PHP. Сегодня взглянем на сниппет обратного действия.

open('test.zip') === TRUE) < // путь к каталогу, в который будут помещены файлы $zip->extractTo('my_dir'); $zip->close(); // удача > else < // неудача >

Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: www.ruseller.com
Автор: Станислав Протасевич
Урок создан: 2 Июля 2013
Просмотров: 22704
Правила перепечатки

5 последних уроков рубрики «PHP»

Фильтрация данных с помощью zend-filter

Когда речь идёт о безопасности веб-сайта, то фраза «фильтруйте всё, экранируйте всё» всегда будет актуальна. Сегодня поговорим о фильтрации данных.

Контекстное экранирование с помощью zend-escaper

Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак. В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.

Подключение Zend модулей к Expressive

Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение. В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.

Совет: отправка информации в Google Analytics через API

Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.

Подборка PHP песочниц

Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.

Источник

ZIP в PHP (ZipArchive)

Класс ZipArchive позволяет быстро и удобно работать с ZIP-архивам, рассмотрим основные возможности класса.

Добавление файлов в архив

В примере используются константы:

  • ZipArchive::CREATE – создавать архив, если он не существует
  • ZipArchive::OVERWRITE – если архив существует, то игнорировать текущее его содержимое т.е. работать как с пустым архивом.
$zip = new ZipArchive(); $zip->open(__DIR__ . '/archive.zip', ZipArchive::CREATE|ZipArchive::OVERWRITE); $zip->addFile(__DIR__ . '/image1.jpg', 'image1.jpg'); $zip->addFile(__DIR__ . '/image2.jpg', 'image2.jpg'); $zip->close();

Если файл необходимо поместить в директорию, то предварительно не нужно создавать пустую папку. Можно просто указать путь и имя файла, например «src»:

$zip->addFile(__DIR__ . '/image1.jpg', 'src/image1.jpg'); $zip->addFile(__DIR__ . '/image2.jpg', 'src/image2.jpg');

Если текстовой файл генерится прямо в скрипте, то удобней скинуть его в архив методом addFromString() .

$contents = 'Содержание файла file.log'; $zip = new ZipArchive(); $zip->open(__DIR__ . '/archive.zip', ZipArchive::CREATE|ZipArchive::OVERWRITE); $zip->addFromString('file.log', $contents); $zip->close();

Заархивировать директорию с содержимым

Сделать архив сайта можно с помощью рекурсивной функции, функция обойдет все файлы в директориях и добавит их в архив.

function addFileRecursion($zip, $dir, $start = '') < if (empty($start)) < $start = $dir; >if ($objs = glob($dir . '/*')) < foreach($objs as $obj) < if (is_dir($obj)) < addFileRecursion($zip, $obj, $start); >else < $zip->addFile($obj, str_replace(dirname($start) . '/', '', $obj)); > > > > $zip = new ZipArchive(); $zip->open(__DIR__ . '/archive.zip', ZipArchive::CREATE|ZipArchive::OVERWRITE); addFileRecursion($zip, __DIR__ . '/test'); $zip->close();

Переименовать файл

$zip = new ZipArchive(); $zip->open(__DIR__ . '/archive.zip'); $zip->renameName('image2.jpg', 'images.jpg'); $zip->close();

Если файл лежит в папке

$zip->renameName('src/image2.jpg', 'src/images.jpg');

Удалить файл из архива

$zip = new ZipArchive(); $zip->open(__DIR__ . '/archive.zip'); $zip->deleteName('image2.jpg'); $zip->close();

Если файл лежит в папке

$zip->deleteName('src/image2.jpg');

Список файлов в архиве

$zip = new ZipArchive(); $zip->open(__DIR__ . '/archive.zip'); $i = 0; $list = array(); while($name = $zip->getNameIndex($i)) < $list[$i] = $name; $i++; >print_r($list); $zip->close();
Array ( [0] => src/image1.jpg [1] => src/image2.jpg [2] => file.log )

Извлечь весь архив

$zip = new ZipArchive(); $zip->open(__DIR__ . '/archive.zip'); $zip->extractTo(__DIR__); $zip->close();

Извлечь определенные файлы

$zip = new ZipArchive(); $zip->open(__DIR__ . '/archive.zip'); $zip->extractTo(__DIR__, array('src/image1.jpg', 'src/image2.jpg')); $zip->close();

Извлечь файл в поток

Данный метод удобен если требуется только прочитать содержимое файла.

$zip = new ZipArchive(); $zip->open(__DIR__ . '/archive.zip'); $contents = ''; $fp = $zip->getStream('file.log'); while (!feof($fp)) < $contents .= fread($fp, 2); >fclose($fp); echo $contents; $zip->close();

Источник

Распаковываем zip архив средствами PHP

Сегодня мы рассмотрим небольшое продолжение одного из предыдущих уроков и продемонстрируем небольшой сниппет для распаковки ZIP архива.

Совсем недавно мы рассмотрели как создавать ZIP архив средствами PHP. Сегодня взглянем на сниппет обратного действия.

open('test.zip') === TRUE) < // путь к каталогу, в который будут помещены файлы $zip->extractTo('my_dir'); $zip->close(); // удача > else < // неудача >

Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: www.ruseller.com
Автор: Станислав Протасевич
Урок создан: 2 Июля 2013
Просмотров: 22705
Правила перепечатки

5 последних уроков рубрики «PHP»

Фильтрация данных с помощью zend-filter

Когда речь идёт о безопасности веб-сайта, то фраза «фильтруйте всё, экранируйте всё» всегда будет актуальна. Сегодня поговорим о фильтрации данных.

Контекстное экранирование с помощью zend-escaper

Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак. В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.

Подключение Zend модулей к Expressive

Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение. В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.

Совет: отправка информации в Google Analytics через API

Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.

Подборка PHP песочниц

Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.

Источник

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