У меня есть 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 ).