在PHP中修改ZIP文件中的单个文本文件

Bry*_*ant 16 php zip web-applications

我的服务器上有一个ZIP文件.我想创建一个PHP文件,loadZIP.php,它将接受一个参数,然后修改ZIP中的文本文件以反映该参数.

因此,访问loadZIP.php?param=blue,将打开zip文件,并替换我用'blue'指定的文本文件中的一些文本,并允许用户下载此编辑的zip文件.

我已查看了所有PHP ZIP函数,但我找不到简单的解决方案.这似乎是一个相对容易的问题,我相信我已经过度思考了.在我去写一些过于复杂的函数之前,我想知道你是怎么做到这一点的.

cla*_*rkf 32

你看过PHP5的ZipArchive功能了吗?

基本上,您可以使用ZipArchive::Open()打开zip,然后ZipArchive::getFromName()将文件读入内存.然后,修改它,用于ZipArchive::deleteName()删除旧文件,用于ZipArchive::AddFromString()将新内容写回zip,以及ZipArchive::close():

$zip = new ZipArchive;
$fileToModify = 'myfile.txt';
if ($zip->open('test1.zip') === TRUE) {
    //Read contents into memory
    $oldContents = $zip->getFromName($fileToModify);
    //Modify contents:
    $newContents = str_replace('key', $_GET['param'], $oldContents)
    //Delete the old...
    $zip->deleteName($fileToModify)
    //Write the new...
    $zip->addFromString($fileToModify, $newContents);
    //And write back to the filesystem.
    $zip->close();
    echo 'ok';
} else {
    echo 'failed';
}
Run Code Online (Sandbox Code Playgroud)

注意ZipArchive是在PHP 5.2.0中引入的(但是,ZipArchive也可以作为PECL包提供).