Как перезаписать json файл и сохранить изменения внутри zip архива c помощью PHP?
этот код открывает zip архив, декодирует json, изменяет нужное значение, но сохраняет измененный json в корень диска, а не перезаписывает файл внутри архива.
Есть идеи, какой код должен быть, чтобы измененный json сохранялся и перезаписывался внутри архива?
$zip = new ZipArchive();
$zip->open('2.zip');
$contents = '';
$fp = $zip->getStream('456.json');
while (!feof($fp)) {
$contents .= fread($fp, 2);
}
fclose($fp);
$zip->close();
$decode_json_nick = json_decode($contents, true);
$decode_json_nick['status']="avalible"; // изменил значение здесь
$contents1 = json_encode($decode_json_nick);
file_put_contents('456.json', $contents1); // тут нужно сохранить именно внутри архива
Ответы (1 шт):
Автор решения: Ренат
→ Ссылка
Как оказалось все намного проще и самое главное скрипт работает! Так-что берите рабочий скрипт, может кому пригодится.
$zip = new ZipArchive();
$zip->open('2.zip'); // открываю архив с именем 2.zip
$contents = '';
$fp = $zip->getStream('456.json'); // получаю доступ к файлу 456.json, который внутри архива 2.zip
while (!feof($fp)) {
$contents .= fread($fp, 2);
}
fclose($fp);
$decode_json_nick = json_decode($contents, true);
$decode_json_nick['status']="avalible"; // изменил значение здесь
$contents1 = json_encode($decode_json_nick);
file_put_contents('456.json', $contents1); // сохраняет в корень директории
$zip->addFile('456.json'); // заносим файл в архив
$zip->close();
unlink('456.json'); // удаляем файл копии в корне директории