2009年10月23日 星期五

[PHP] 解壓縮 ZIP 檔案

因為專案需要利用 PHP 解壓縮 ZIP 檔案,解析裡面的內容
咕狗了一下,發現有一個套件還滿好用的

PclZip (目前版本至 2.8,2,持續更新中..)
還是來做個筆記記錄一下吧!


使用方法 :
1.include 至檔案中,如: include_once( 'pclzip.lib.php');
2.解壓縮目錄記得將寫入權限開啟,如: temp目錄設定為 777

基本用法 :
//view plaincopy to clipboardprint?
require_once('pclzip.lib.php'); 
$archive = new PclZip('archive.zip'); 
$archive->extract(); 

這樣就完成最基本的解壓縮功能,還有其他參數可以設定,見下表

參數
引數
說明
PCLZIP_OPT_PATH
字串
要解壓縮到哪的路徑。可用於extract()、extractByIndex()。

PCLZIP_OPT_ADD_PATH
字串
增加一個目錄。可用於create()、add()、extract()。(使用於create()時,是把要壓縮的檔案放進這個目錄中再壓縮,使用於extract()時,是在要解壓縮的路徑中增加此目錄,並解壓縮到此目錄中)。

PCLZIP_OPT_REMOVE_PATH
字串
移除部份的目錄路徑,例如原本檔案所在的目錄為aa/bb/cc/test.test.txt,但是希望壓縮或解壓縮後的路徑為cc/test.txt, 就可以使用PCLZIP_OPT_REMOVE_PATH,"aa/bb"。可用於create()、add()、extract()、 extractByIndex()。(與PCLZIP_OPT_REMOVE_ALL_PATH一起用的時候會被自動忽略)

PCLZIP_OPT_REMOVE_ALL_PATH
--
移除所有檔案的目錄,所有檔案都會被解壓縮或壓縮到當前或是指定的目錄中,請注意如果有不同目錄的相同名稱檔案,使用此參數時會被覆蓋,此參數不需要引數。可用於create()、add()、extract()、extractByIndex()。

PCLZIP_OPT_SET_CHMOD
CHMOD值
設定解壓縮出來的檔案的CHMOD值。可用於extract()、extractByIndex()。

PCLZIP_OPT_BY_NAME
檔案名稱
僅解壓縮引數中所指定的檔案,檔案名稱可以用陣列或是逗號隔開表示。

PCLZIP_OPT_BY_EREG
RegEx字串
僅解壓縮引數中正規表達式比對檔名正確的檔案,使用php中的ereg()函式比對。

PCLZIP_OPT_BY_PREG
RegEx字串
僅解壓縮引數中正規表達式比對檔名正確的檔案,使用php中的preg_match()函式比對。

PCLZIP_OPT_BY_INDEX
陣列
僅解壓縮引數陣列中各元素所指定順序的檔案。(這個我還不太懂是照什麼順序,似乎不是照字母排)

PCLZIP_OPT_EXTRACT_AS_STRING
--
將一個檔案的內容解壓縮成一個字串,通常可能用於只需要看readme檔案的情況。請注意如果一次解壓縮太多檔案,有可能會將記憶體耗盡。

PCLZIP_OPT_EXTRACT_IN_OUTPUT
--
將一個檔案的內容解壓縮並直接輸出(即類似直接echo此結果)。

PCLZIP_OPT_NO_COMPRESSION
--
將一個檔案加入此壓縮檔內,此檔案不會被壓縮,僅是放入同一個壓縮檔中。

PCLZIP_OPT_COMMENT
字串
建立壓縮檔時增加一個註解,如果原本已經有註解的話,將會直接覆蓋過去。

PCLZIP_OPT_ADD_COMMENT
字串
建立壓縮檔時增加一個註解,如果原本已經有註解的話,將會接在後面。

PCLZIP_OPT_PREPEND_COMMENT
字串
建立壓縮檔時增加一個註解,如果原本已經有註解的話,將會把原先的註解接在此字串的後面。



資料參考來源:
http://itisjoe.pixnet.net/blog/post/14758894
http://support.oss.org.tw/?q=node/147

沒有留言: