PHP 7.1.0 Released

ZipArchive::setArchiveComment

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

ZipArchive::setArchiveCommentDéfinit le commentaire d'une archive ZIP

Description

bool ZipArchive::setArchiveComment ( string $comment )

Définit le commentaire d'une archive ZIP.

Liste de paramètres

comment

Le contenu du commentaire

Valeurs de retour

Cette fonction retourne TRUE en cas de succès ou FALSE si une erreur survient.

Exemples

Exemple #1 Création d'une archive et définition d'un commentaire

<?php
$zip 
= new ZipArchive;
$res $zip->open('test.zip'ZipArchive::CREATE);
if (
$res === TRUE) {
    
$zip->addFromString('test.txt''contenu du fichier ici');
    
$zip->setArchiveComment('commentaire de l\'archive');
    
$zip->close();
    echo 
'ok';
} else {
    echo 
'échec';
}
?>
add a note add a note

User Contributed Notes 2 notes

up
3
stanislav dot eckert at vizson dot de
1 year ago
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");
up
0
solrac at ragnarockradio dot com
13 days ago
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';
}
?>
To Top