(PHP 5 >= 5.2.0, PECL zip >= 1.1.0)
ZipArchive::open — Open a ZIP file archive
Opens a new zip archive for reading, writing or modifying.
filenameThe file name of the ZIP archive to open.
flagsThe mode to use to open the archive.
          ZIPARCHIVE::OVERWRITE
         
          ZIPARCHIVE::CREATE
         
          ZIPARCHIVE::EXCL
         
          ZIPARCHIVE::CHECKCONS
         
Error codes
       Returns TRUE on success or the error code.
       
          ZIPARCHIVE::ER_EXISTS
         
File already exists.
          ZIPARCHIVE::ER_INCONS
         
Zip archive inconsistent.
          ZIPARCHIVE::ER_INVAL
         
Invalid argument.
          ZIPARCHIVE::ER_MEMORY
         
Malloc failure.
          ZIPARCHIVE::ER_NOENT
         
No such file.
          ZIPARCHIVE::ER_NOZIP
         
Not a zip archive.
          ZIPARCHIVE::ER_OPEN
         
Can't open file.
          ZIPARCHIVE::ER_READ
         
Read error.
          ZIPARCHIVE::ER_SEEK
         
Seek error.
Example #1 Open and extract
<?php
$zip = new ZipArchive;
$res = $zip->open('test.zip');
if ($res === TRUE) {
    echo 'ok';
    $zip->extractTo('test');
    $zip->close();
} else {
    echo 'failed, code:' . $res;
}
?>
Example #2 Create an archive
<?php
$zip = new ZipArchive;
$res = $zip->open('test.zip', ZipArchive::CREATE);
if ($res === TRUE) {
    $zip->addFromString('test.txt', 'file content goes here');
    $zip->addFile('data.txt', 'entryname.txt');
    $zip->close();
    echo 'ok';
} else {
    echo 'failed';
}
?>