📜  php 提取 zip - PHP (1)

📅  最后修改于: 2023-12-03 14:45:24.133000             🧑  作者: Mango

PHP 提取 Zip

时常会遇到需要从 Zip 压缩文件中提取文件的场景,在 PHP 中提取 Zip 文件非常的容易,本文将通过实例讲解如何使用 PHP 进行 Zip 文件的提取。

准备工作

在进行 Zip 文件的提取之前,我们需要先准备好一个 Zip 压缩包,以供后续的演示使用。将需要提取的文件放入一个文件夹中,然后在文件夹所在的目录下执行以下命令:

zip -r myfiles.zip myfiles

执行完命令后,同级目录下会生成一个名为 myfiles.zip 的文件,其中包含了 myfiles 文件夹中的所有文件。

Zip 文件提取

使用 PHP 进行 Zip 文件提取的核心函数是 zip_openzip_read

$zip = zip_open('path/to/myfiles.zip');

while ($entry = zip_read($zip)) {
    $entry_name = zip_entry_name($entry);
    $entry_size = zip_entry_filesize($entry);
    $entry_content = zip_entry_read($entry, $entry_size);

    // 处理文件内容
}

zip_close($zip);

其中,$zip 为使用 zip_open 函数打开的 Zip 文件对象。zip_read 函数用于读取 Zip 文件中的每个条目,返回的是一个 zip_entry 对象。

循环遍历所有的 zip_entry 对象,使用 zip_entry_name 函数获取文件名,使用 zip_entry_filesize 函数获取文件大小,使用 zip_entry_read 函数读取文件内容。

在读取完成后,一定要使用 zip_close 函数关闭 Zip 文件对象。

示例程序
$zip = zip_open('path/to/myfiles.zip');

while ($entry = zip_read($zip)) {
    $entry_name = zip_entry_name($entry);
    $entry_size = zip_entry_filesize($entry);
    $entry_content = zip_entry_read($entry, $entry_size);

    if (stripos($entry_name, '.txt') !== false) {
        echo "提取文件:{$entry_name}" . PHP_EOL;
        echo "文件内容:" . PHP_EOL;
        echo $entry_content . PHP_EOL;
    }
}

zip_close($zip);

上述程序中,我们从 Zip 文件中提取出所有的 .txt 文件,并打印出文件名和文件内容。当然,有了上述代码,你可以自由发挥,提取出任何你所需要的文件。