我有一个稍微非常规的任务,我试图用 PHP 中的 .ZIP 档案来完成。我有一个用于自动化任务的 zip 存档(它是 Amazon EC2 实例的启动包),其中包含许多文本和 xml 文件。我需要做的是在这些文件中查找/替换一些文本,并使用 PHP 即时输出 BASE 64 编码字符串(而不是编写新的 .zip 文件)。
我可以毫无问题地获取文件内容并使用 file_get_contents() 和 base64_encode() 或 find/replace 对它们进行 base64 编码,这是我似乎无法弄清楚的解压缩和压缩字符串。
我想避免解压缩存档、复制文件、编辑将新 .zip 写入磁盘的文件,然后获取内容并对其进行编码。我希望可能有一个看起来更像这样的解决方案:
将 zip 文件的内容转换为字符串。
$originalZipFile = file_get_contents('Path/To/ZipFile');
将该字符串中的数据“解压缩”为一个新字符串,以公开我想要查找/替换的文本位。
$unzippedFile = someFunction($originalZipFile);
查找和替换文本位。
$processedString = str_replace($find, $replace, $unzippedFile);
将处理后的字符串“重新压缩”成一个新字符串。
$rezippedFile = someOtherFunction($processedString);
Base64 编码“rezzziped”字符串。
$desiredOutputString = base64_encode($rezippedFile);
我查看了 PHP ZipArchive 类,但它似乎没有我正在寻找的功能。
非常感谢任何见解!
-奥利弗