Работа с архивами zip на PHP

Для начала прочитаем содержимое архива (чтение архива zip на php). Во встречающихся на просторах интернета примерах, зачастую игнорируется тот факт, что имена файлов могут быть в кириллице.В результате пользователи видят «крякозябры». А zip хранит имена файлов, указывая их не в кодировке UTF-8, а в кодировке cp866 (видимо из соображения совместимости). По крайне мере на Windows. Поэтому имена файлов перед употреблением, нужно переформатировать в UTF-8.

$za = new ZipArchive();
$za->open(WUO_ROOT."/tmp.zip");
$result_stats = array();
for ($i = 0; $i < $za->numFiles; $i++){
    $name = $za->getNameIndex($i, \ZipArchive::FL_ENC_RAW);
    $encoded_filename = iconv("cp866","UTF-8//IGNORE",$name);
    var_dump($encoded_filename);
}

Далее попробуем распаковать понравившийся файл:

file_put_contents(WUO_ROOT."/peni.xls", $za->getFromIndex($index_file_peni));

Как видно, всё достаточно просто.

чтение архива zip на php

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.