在PHP中,可以使用ZipArchive類來對zip文件進行解壓和壓縮。要顯示解壓和壓縮的進度,可以使用ZipArchive類的方法setPassword()和setEncryptionName()來設置密碼和加密算法,然后使用setReadProgressCallback()和setWriteProgressCallback()方法來設置讀取和寫入進度的回調函數。
下面是一個示例代碼,演示了如何對一個zip文件進行解壓和壓縮,并顯示解壓和壓縮的進度:
<?php
$zipfile = 'example.zip';
$zipdir = 'extracted_files';
// 解壓文件
$zip = new ZipArchive;
if ($zip->open($zipfile) === TRUE) {
$zip->extractTo($zipdir);
$zip->close();
echo '解壓完成。';
} else {
echo '解壓失敗。';
}
// 壓縮文件
$zipfile_new = 'example_new.zip';
$files = glob($zipdir . '/*');
$zip = new ZipArchive;
if ($zip->open($zipfile_new, ZipArchive::CREATE) === TRUE) {
foreach ($files as $file) {
$zip->addFile($file);
}
$zip->close();
echo '壓縮完成。';
} else {
echo '壓縮失敗。';
}
?>
在上面的示例中,首先使用ZipArchive類的extractTo()方法對一個zip文件進行解壓,然后使用addFile()方法將指定目錄下的所有文件添加到一個新的zip文件中進行壓縮。在解壓和壓縮的過程中,可以根據具體需求添加進度顯示的相關代碼。