ZipArchive::setArchiveComment

(PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.4.0)

ZipArchive::setArchiveCommentУстанавливает комментарий к ZIP-архиву

Описание

bool ZipArchive::setArchiveComment ( string $comment )

Устанавливает комментарий к ZIP-архиву.

Список параметров

comment

Содержание комментария.

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Примеры

Пример #1 Создание архива и установка комментария

<?php
$zip 
= new ZipArchive;
$res $zip->open('test.zip'ZipArchive::CREATE);
if (
$res === TRUE) {
    
$zip->addFromString('test.txt''file content goes here');
    
$zip->setArchiveComment('new archive comment');
    
$zip->close();
    echo 
'ok';
} else {
    echo 
'failed';
}
?>

Коментарии

Please note that ZIP archives do not support unicode encodings like UTF-8, so multi-byte characters cannot be shown in standard ZIP viewers like WinRAR or 7-zip. However, the text will stored as-is, so it is at least possible to display UTF-8 comments in your own desktop or web applications. If you want to test with PHP and output in a browser, don't forget to set page charset to UTF-8 too:

header("Content-Type: text/plain; charset=utf-8");
2015-05-12 12:32:33
http://php5.kiev.ua/manual/ru/ziparchive.setarchivecomment.html
Zip archives are encoded in ISO-8859-1 when stored but comments seem to be added in UTF-8 everytime. So...

<?php
   $zip
->setArchiveComment("Peña");    //outputs "Peña" as the comment.

   
$zip->setArchiveComment("Peña");    //outputs "NULL" as the comment / no comment is displayed.
?>

Using mb_internal_encoding() or mb_http_output() wont change this behavior.
At the end you can fix your corrupted comment using something like str_replace();

Consider this:

<?php
$zip 
= new ZipArchive;
$res $zip->open('test.zip'ZipArchive::CREATE);
if (
$res === TRUE) {
   
$zip->addFromString('test.txt''file content goes here');
   
$zip->setArchiveComment('Peña'); //outputs "Peña" as the comment.
   
$zip->close();
   
$file file_get_contents('test.zip');
   
file_put_contents('test.zip'str_replace("Peña"utf8_decode("Peña"), $file)); //outputs "Peña" as the comment. FIXED!

   
echo 'ok';
} else {
    echo 
'failed';
}
?>
2016-11-22 21:25:52
http://php5.kiev.ua/manual/ru/ziparchive.setarchivecomment.html
ZipArchive (using libzip) encodes comments in UTF-8/ASCII, but some softwares on Windows show comments in ANSI (such as GBK...), so we should :

<?php
    $_charset 
'GBK';
   
$file 'D:/boaphp.zip';
   
$comment '中文ABC123';
   
   
$zip = new ZipArchive;
   
$res $zip->open($fileZipArchive::CREATE);
    if (
$res) {
       
//add files here

       
if($_charset){ //for Winrar, 7z...
           
$zip->close();
           
           
$str mb_convert_encoding($comment$_charset'UTF-8');
           
$fh fopen($file'r+b');
           
fseek($fh, -2SEEK_END);
           
$str pack('v'strlen($str)) . $str;
           
fwrite($fh$str);
           
fclose($fh);
        }else{ 
//for PHP: $zip->getArchiveComment()
           
$zip->setArchiveComment($comment);
           
$zip->close();
        }
    }
?>
2023-10-09 10:01:38
http://php5.kiev.ua/manual/ru/ziparchive.setarchivecomment.html

    Поддержать сайт на родительском проекте КГБ