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