2010-11-03 108 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獲得)。