Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

Вы просмотрели функции 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';
}

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