2010-11-03 151 views
11

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

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

我已经浏览了所有的PHP ZIP函数,但是我找不到一个简单的解决方案。这似乎是一个相对容易的问题,我相信我已经完全想到了。在我写出一些过于复杂的函数之前,我想知道你会如何去做这件事。

回答

20

你看过PHP5的ZipArchive功能吗?

基本上,你可以使用ZipArchive::Open()打开zip,然后ZipArchive::getFromName()将文件读入内存。然后,修改它,使用ZipArchive::deleteName()删除旧文件,使用ZipArchive::AddFromString()写新的内容回拉链,和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'; 
} 

注ZipArchive是PHP 5.2.0介绍(但,ZipArchive也可作为PECL package获得)。