您的位置:

使用PHP Zip扩展创建和解压缩ZIP文件

一、什么是PHP Zip扩展

PHP Zip扩展是PHP内置的扩展模块之一,它提供了在PHP应用程序中创建和解压缩ZIP文件的功能。Zip文件格式是一种常见的文件压缩格式,通过将多个文件打包成一个Zip文件,可以减小文件的体积,方便传输和存储。

PHP Zip扩展提供了一组API,可以在PHP应用程序中动态地创建、读取和修改Zip文件。同时,PHP Zip扩展还支持密码保护,可以给Zip文件添加密码保护,使得只有知道密码的人才能解压缩文件。

二、使用PHP Zip扩展创建Zip文件

使用PHP Zip扩展创建Zip文件,需要先调用ZipArchive类的open()方法打开一个Zip文件,然后使用addFile()方法依次添加要压缩的文件,最后调用close()方法关闭Zip文件即可。

下面是一个创建Zip文件的例子:

/**
 * 打包文件到Zip文件中
 * @param string $zipFilename 压缩后的Zip文件名
 * @param array $files 要压缩的文件列表,每个元素为一个数组,包含两个元素:本地文件路径和Zip文件路径
 * @param string $password Zip文件的密码
 * @return bool
 */
function zipFiles($zipFilename, $files, $password=null)
{
    // 创建ZipArchive对象
    $zip = new ZipArchive;
    if ($zip->open($zipFilename, ZipArchive::CREATE) !== TRUE) {
        return false;
    }

    if (!empty($password)) {
        $zip->setPassword($password);
    }

    // 添加要压缩的文件
    foreach($files as $file) {
        $localfile = $file[0];
        $zipfile = $file[1];
        $zip->addFile($localfile, $zipfile);
    }

    // 关闭Zip文件
    $zip->close();

    return true;
}

上面的例子中,zipFiles()函数接受3个参数:要压缩的文件列表、压缩后的Zip文件名和Zip文件的密码(可选)。函数内部先创建了一个ZipArchive对象,并调用它的open()方法打开要压缩的Zip文件。然后,使用setPassword()方法设置Zip文件的密码(如果有的话)。接着,使用addFile()方法依次添加要压缩的文件,每个元素包含两个参数:本地文件路径和Zip文件路径。最后,调用close()方法关闭Zip文件。

三、使用PHP Zip扩展解压缩Zip文件

使用PHP Zip扩展解压缩Zip文件,需要先调用ZipArchive类的open()方法打开一个Zip文件,然后使用extractTo()方法解压缩文件到指定目录,最后调用close()方法关闭Zip文件即可。

下面是一个解压缩Zip文件的例子:

/**
 * 解压缩Zip文件到指定目录
 * @param string $zipFilename 要解压的Zip文件名
 * @param string $targetDir 解压缩后的目标目录
 * @param string $password Zip文件的密码
 * @return bool
 */
function unzipFiles($zipFilename, $targetDir, $password=null)
{
    // 创建ZipArchive对象
    $zip = new ZipArchive;
    if ($zip->open($zipFilename) !== TRUE) {
        return false;
    }

    if (!empty($password)) {
        $zip->setPassword($password);
    }

    // 解压缩文件到指定目录
    $zip->extractTo($targetDir);

    // 关闭Zip文件
    $zip->close();

    return true;
}

上面的例子中,unzipFiles()函数接受3个参数:要解压缩的Zip文件名、解压缩后的目标目录和Zip文件的密码(可选)。函数内部先创建了一个ZipArchive对象,并调用它的open()方法打开要解压缩的Zip文件。然后,使用setPassword()方法设置Zip文件的密码(如果有的话)。接着,使用extractTo()方法解压缩文件到指定目录。最后,调用close()方法关闭Zip文件。