PHP zip 擴充套件

Sheeraz Gul 2023年1月30日 2022年5月13日
  1. 在 Ubuntu 中安裝 ZIP 擴充套件
  2. 在 PHP 中使用 ZipArchive() 類建立 Zip 檔案
  3. 在 PHP 中使用 ZipArchive() 類建立 Zip 檔案
  4. 如何使用 PHP Zip 擴充套件來獲取 ZIP 的所有成員檔案的資訊
PHP zip 擴充套件

Zip 擴充套件是檔案處理中最重要的專案之一。如果你想壓縮檔案或通過一個檔案移動多個檔案,則需要 ZIP

我們需要安裝 libzip 來執行涉及其他平臺的 ZIP 擴充套件的操作。

在 Ubuntu 中安裝 ZIP 擴充套件

ZIP 已經包含在 windows PHP 中。我們將嘗試為 Ubuntu 安裝這個庫。

Ubuntu 中執行以下命令以安裝 libzip 庫。

$ sudo apt-get update
$ sudo apt-get install -y
$ sudo apt-get install libzip-dev

輸出:

Setting up libzip-dev:amd64 (1.7.3-1+ubuntu20.04.1+deb.sury.org+2) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for libc-bin (2.31-0ubuntu9.2) ...

下一步是為 ZIP 安裝 PHP 擴充套件。

$ sudo apt install php7.4-zip

成功安裝後,你可以在 PHP 中使用它。

在 PHP 中使用 ZipArchive() 類建立 Zip 檔案

ZipArchive() 是用於在 PHP 中執行 ZIP 操作的類。使用 ZipArchive() 類,建立一個 Zip 檔案。

<?php
$create_zip = new ZipArchive();
$file_name = "./New.zip";

if ($create_zip->open($file_name, ZipArchive::CREATE)!==TRUE) {
    exit("cannot open the zip file <$file_name>\n");
}
$current_dir=getcwd();
//Create files to add to the zip
$create_zip->addFromString("file1 ". time().".txt" , "#1 This is This is the test file number one.\n"); 
$create_zip->addFromString("file2 ". time().".txt", "#2 This is This is the test file number one.\n");
//add files to the zip
$create_zip->addFile($current_dir . "/too.php","/testfromfile.php");
echo "Number of files added: " . $create_zip->numFiles;
echo "<br>";
echo "Failed to add:" . $create_zip->status ;
$create_zip->close();
?>

上面的程式碼建立了兩個包含一些內容的文字檔案,並將它們新增到一個 zip 檔案中。

輸出:

在 PHP 中建立 Zip 檔案

在 PHP 中使用 ZipArchive() 類建立 Zip 檔案

讓我們使用 PHP 的 ZipArchive() 類提取在第一個程式碼中建立的 zip 檔案。

<?php
$extract_zip = new ZipArchive;
$open_zip = $extract_zip->open('New.zip');
if ($open_zip === TRUE) {
	$extract_to = getcwd();
    $extract_zip->extractTo($extract_to); //extract to the current working directory.
    echo "Number of Files to be Extracted:" . $extract_zip->numFiles . "<br>";
	$extract_zip->close();
    echo 'Files Successfully Extracted!';
} 
else {
    echo 'Cannot Extract!';
}
?>

上面的程式碼將提取在第一個示例中建立的 New.zip 檔案。

輸出:

在 PHP 中提取 Zip 檔案

如何使用 PHP Zip 擴充套件來獲取 ZIP 的所有成員檔案的資訊

PHP ZIP 擴充套件可以獲取 ZIP 內所有檔案的資訊。

<?php
$zip_file = zip_open("New.zip");
if ($zip_file) {
    while ($zip_members = zip_read($zip_file)) {
        echo "Name of the file:               " . zip_entry_name($zip_members) . "<br>";
        echo "Original Size of the File:    " . zip_entry_filesize($zip_members) . "<br>";
        echo "Compressed Size of the File:    " . zip_entry_compressedsize($zip_members) . "<br>";
        echo "Method of Compression: " . zip_entry_compressionmethod($zip_members) . "<br>";

        if (zip_entry_open($zip_file, $zip_members, "r")) {
            echo "Content of the file:<br>";
            $buf = zip_entry_read($zip_members, zip_entry_filesize($zip_members));
            echo "$buf <br>";

            zip_entry_close($zip_members);
        }
        echo "<br>";
    }
    zip_close($zip_file);
}
?>

上面的程式碼使用內建的 ZIP 函式來獲取 ZIP 內的檔案資訊。

輸出:

Name of the file: file1 1644842283.txt
Original Size of the File: 45
Compressed Size of the File: 39
Method of Compression: deflated
Content of the file:
#1 This is test file number one.

Name of the file: file2 1644842283.txt
Original Size of the File: 45
Compressed Size of the File: 39
Method of Compression: deflated
Content of the file:
#2 This is test file number two.
Author: Sheeraz Gul
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

相關文章 - PHP Zip