Sample code for 30+ languages & platforms
PHP ActiveX Requires Chilkat v11.0.0+

Unzip Some Files by Iterating over Entries

See more Zip Examples

Demonstrates how to unzip specific files by iterating over entries in a .zip.

Chilkat PHP ActiveX Downloads

PHP ActiveX
<?php

$success = 0;

//  This requires the Chilkat API to have been previously unlocked.
//  See Global Unlock Sample for sample code.

$zip = new COM("Chilkat.Zip");

//  Open a .zip containing:
//  
//  a1.xml
//  b1.xml
//  c1.xml
//  dir1/a2.xml
//  dir1/c2.xml
//  dir2/dir3/c3.xml

//  We wish to unzip only a1.xml, b1.xml, and c1.xml
$success = $zip->OpenZip('qa_data/zips/xml_files.zip');
if ($success == 0) {
    print $zip->LastErrorText . "\n";
    exit;
}

$sbFilename = new COM("Chilkat.StringBuilder");

$entry = new COM("Chilkat.ZipEntry");
$numEntries = $zip->NumEntries;
$i = 0;
while ($i < $numEntries) {
    $zip->EntryAt($i,$entry);

    $entryFilePath = $entry->FileName;
    print $entryFilePath . "\n";

    if ($entry->IsDirectory == 0) {
        $sbFilename->SetString($entryFilePath);
        if ($sbFilename->Contains('/',0) == 0) {
            //  Does not contain "/"
            //  Unzip to the qa_output directory.
            $success = $entry->Extract('qa_output');
            if ($success == 0) {
                print 'Failed to unzip ' . $entryFilePath . "\n";
            }
            else {
                print 'Unzipped ' . $entryFilePath . "\n";
            }

        }

    }

    $i = $i + 1;
}


?>