Добавить файл из строки в новую папку ZipArchive
Допустим, у меня есть переменная с именем и экземпляром:
$css = 'body {color:red;}';
В настоящее время я создаю свой zip-файл следующим образом:
ini_set("max_execution_time", 300);
// create object
$zip = new ZipArchive();
// open archive
if ($zip->open("my-archive.zip", ZIPARCHIVE::CREATE) !== TRUE) {
die ("Could not open archive");
}
// initialize an iterator
// pass it the directory to be processed
$jsFiles = new RecursiveIteratorIterator(new RecursiveDirectoryIterator("../js"));
$cssFiles = new RecursiveIteratorIterator(new RecursiveDirectoryIterator("../css"));
$images = new RecursiveIteratorIterator(new RecursiveDirectoryIterator("../_design"));
// iterate over the directory
// add each file found to the archive
foreach ($jsFiles as $key=>$value) {
$zip->addFile(realpath($key), $key) or die ("ERROR: Could not add file: $key");
}
foreach ($cssFiles as $key=>$value) {
$zip->addFile(realpath($key), $key) or die ("ERROR: Could not add file: $key");
}
foreach ($images as $key=>$value) {
$zip->addFile(realpath($key), $key) or die ("ERROR: Could not add file: $key");
}
// close and save archive
$zip->close();
echo "Archive created successfully.";
Допустим, у меня уже есть файл с именем color.css
находится в /css/main/color.css/
и я хотел мою новую строку $css
чтобы заменить весь этот новый файл в архиве, как я могу это сделать? Я посмотрел на ZipArchive::addFromString
но я не мог найти способ поместить это в определенную папку. Это единственный файл, который нужно изменить во всем моем каталоге.
Любая помощь будет отличной.
1 ответ
Если вы посмотрите на Пример №2 по адресу http://www.php.net/manual/en/ziparchive.addfromstring.php то увидите, что первым параметром ZipArchive::addFromString может быть любой путь внутри вашего zip-архива.,
Поэтому в вашем случае вызов будет выглядеть так:
$zip->addFromString("css/main/color.css",$css);