Изменение одного текстового файла в ZIP-файле, в PHP

У меня есть ZIP-файл на моем сервере. Я хочу создать файл PHP, loadZIP.php, который будет принимать один параметр, а затем изменить текстовый файл в ZIP, чтобы отразить этот параметр.

Таким образом, доступ к loadZIP.php?param=blue , откроет zip-файл и заменит некоторый текст в текстовом файле, который я укажу на «синий», и разрешаю пользователю загружать этот отредактированный zip-файл.

Я просмотрел все функции PHP ZIP, но я не могу найти простое решение. Это похоже на относительно легкую проблему, и я верю, что все закончилось, думая об этом. Прежде чем я пойду и напишу некоторые чрезмерно сложные функции, мне было интересно, как вы это сделаете.

Вы взглянули на функции ZipArchive PHP5?

В принципе, вы можете использовать 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'; } 

Примечание. ZipArchive был представлен в PHP 5.2.0 (но ZipArchive также доступен как пакет PECL ).