PclZip 簡介與使用 (2)

接下來會舉幾個例子來說明如何使用 PclZip。
 
範例1、產生ZIP壓縮檔
    PclZip($zipname): 為 PclZip constructor,$zipname為 PKZIP 壓縮檔的檔名。主要是產生一個 PclZip 物件,即一個 PKZIP 壓縮檔;但此時,只有壓縮檔產生出來,並做一些檢查(例如是否有開啟 zlib extension...等),除此之外,並沒有做其他動作。
 
    create($filelist, [optional arguments list]): 將參數 $filelist 指定的檔案或目錄(包含當中所有檔案與子目錄)加入上述所產生的壓縮檔中。而非必要的參數則能夠修改壓縮檔內的檔案存放路徑。此 method 可用的參數可以參考網誌(www.phpconcept.net/pclzip/man/en/index.php)。
 
    下面的範例說明如何產生 PKZIP 壓縮檔(檔名為 archive.zip),並將 file.txt、data/text.txt以及目錄 folder(包含當中的檔案與子目錄)加入剛剛產生的 archive.zip中:
 
<?php
    include_once('pclzip.lib.php');
    $archive = new PclZip('archive.zip');
    $v_list = $archive->create('file.txt,data/text.txt,folder');
    if ($v_list == 0) {
        die("Error : ".$archive->errorInfo(true));
    }
?>

    下面的範例說明基本上與上例一樣產生 archive.zip,但在將 file.txt 與 text.txt 壓縮於其中時,將路徑由 data/ 改為 install/ ;因此,在 archive.zip 中這兩個檔案的路徑會是install/file.txt 與 install/text.txt:
 
<?php
    include_once('pclzip.lib.php');
    $archive = new PclZip('archive.zip');
    $v_list = $archive->create('data/file.txt,data/text.txt',
                                     PCLZIP_OPT_REMOVE_PATH, 'data',
                                     PCLZIP_OPT_ADD_PATH, 'install');
    if ($v_list == 0) {
        die("Error : ".$archive->errorInfo(true));
    }
?>

範例2、列出壓縮檔內容
    listContent( ) :列出壓縮檔中的內容,包括檔案的屬性與目錄:
 
<?php
    include_once('pclzip.lib.php');
    $zip = new PclZip("test.zip");

    if (($list = $zip->listContent()) == 0) {
    die("Error : ".$zip->errorInfo(true));
    }

    for ($i=0; $i<sizeof($list); $i++) {
        for(reset($list[$i]); $key = key($list[$i]); next($list[$i])) {
            echo "File $i / [$key] = ".$list[$i][$key]."<br>";
        }
        echo "<br>";
    }
?>

    上例將會回傳結果:
 
File 0 / [filename] = data/file1.txt
File 0 / [stored_filename] = data/file1.txt
File 0 / [size] = 53
File 0 / [compressed_size] = 36
File 0 / [mtime] = 1010440428
File 0 / [comment] =
File 0 / [folder] = 0
File 0 / [index] = 0
File 0 / [status] = ok

File 1 / [filename] = data/file2.txt
File 1 / [stored_filename] = data/file2.txt
File 1 / [size] = 54
File 1 / [compressed_size] = 53
File 1 / [mtime] = 1011197724
File 1 / [comment] =
File 1 / [folder] = 0
File 1 / [index] = 1
File 1 / [status] = ok

範例3、解壓縮檔案
    extract([options list]) :解壓縮 PKZIP 中的檔案或目錄。
 
    [options list] 可用的參數可參考網址(www.phpconcept.net/pclzip/man/en/index.php)。這些參數能讓使用者在解壓縮的時候有更多的選項,譬如指定變更解壓縮檔案的路徑、指定只解壓縮某些檔案或不解壓縮某些檔案或者是將檔案解壓縮成字串輸出(可用於 readme 檔)。
 
    下例是一個簡單的解壓縮檔案範例,將壓縮檔 archive.zip 內的檔案解壓縮至目前的目錄:
 
<?php
    require_once('pclzip.lib.php');
    $archive = new PclZip('archive.zip');
        if ($archive->extract() == 0) {
        die("Error : ".$archive->errorInfo(true));
    }
?>
    下例是進階的解壓縮檔案使用,archive.zip 中所有檔案都解壓縮於 data/ 中,而特別指明在 install/release 中的所有檔案也直接丟於 data/ 中,而非 data/install/release:
 
<?php
    include('pclzip.lib.php');
    $archive = new PclZip('archive.zip');
    if ($archive->extract(PCLZIP_OPT_PATH, 'data',
              PCLZIP_OPT_REMOVE_PATH, 'install/release') == 0) {
                            die("Error : ".$archive->errorInfo(true));
    }
?>