我试图用PHP中的.ZIP档案完成一项非常规的非常规任务。我有一个用于自动化任务的zip存档(它是Amazon EC2实例的启动包),它包含许多文本和xml文件。我需要做的是在这些文件中查找/替换几段文本,并在运行中使用PHP输出一个BASE 64编码的字符串(不是写一个新的.zip文件)。
我没有问题获取文件内容和base64用file_get_contents()和base64_encode(),或者查找/替换它们,它是解压缩,并且压缩到和从字符串我似乎无法弄清楚
我想避免解压缩存档,复制文件,编辑将新.zip写入磁盘的文件,然后获取内容和编码。我希望可能有一个看起来更像这样的解决方案:
将zip文件的内容转换为字符串。
$originalZipFile = file_get_contents('Path/To/ZipFile');
将该字符串中的数据“解压缩”为新字符串,以显示我想要查找/替换的文本位。
$unzippedFile = someFunction($originalZipFile);
查找并替换文本位。
$processedString = str_replace($find, $replace, $unzippedFile);
将已处理的字符串“重新压缩”为新字符串。
$rezippedFile = someOtherFunction($processedString);
Base64编码“rezziped”字符串。
$desiredOutputString = base64_encode($rezippedFile);
我看过PHP ZipArchive类,但它似乎没有我正在寻找的功能。
非常感谢任何见解!
-Oliver
答案 0 :(得分:0)
嗯,我相信我找到了一个很好的解决方案。对于寻找类似解决方案的其他人,我建议您查看Paul Duncan撰写的ZipStream-PHP课程。
使用此类,您可以将文件,内容和目录动态写入zip文件,然后在不将文件写入磁盘的情况下进行流式传输。
非常自动化。