Intereting Posts
php codeigniter: вызов неопределенного метода CI_Loader :: model () Скрытие заголовка главной категории на странице уникальной категории Вкладки Jquery содержат открытые вкладки, которые являются субадиями в URL-адресе Как загрузить файл на сервер PHP? Значение вставляется как 2147483647 в базу данных как «переписать правило» для под-подкаталога? .htaccess / PHP Подходы к тайм-ауту сеансов в веб-приложении с использованием AJAX autorefreshes Почему встроенные функции в PHP называются так случайным образом? PHP обрезка не работает, возвращает черное изображение – Система обрезки изображений Просмотр RSS-ленты мой PHP-код НЕ будет вставлять записи в таблицу SQL dabase API календаря Google v3 – не создание события (аутентификация от сервера к серверу) Как поменять два значения в массиве с помощью индексов? Проблема, повторяющая HTML со сценарием в ней, нуждающаяся в третьем " Загрязнение параметров HTTP

Изменение одного текстового файла в 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 ).