0

我有一个稍微非常规的任务,我试图用 PHP 中的 .ZIP 档案来完成。我有一个用于自动化任务的 zip 存档(它是 Amazon EC2 实例的启动包),其中包含许多文本和 xml 文件。我需要做的是在这些文件中查找/替换一些文本,并使用 PHP 即时输出 BASE 64 编码字符串(而不是编写新的 .zip 文件)。

我可以毫无问题地获取文件内容并使用 file_get_contents() 和 base64_encode() 或 find/replace 对它们进行 base64 编码,这是我似乎无法弄清楚的解压缩和压缩字符串。

我想避免解压缩存档、复制文件、编辑将新 .zip 写入磁盘的文件,然后获取内容并对其进行编码。我希望可能有一个看起来更像这样的解决方案:

  1. 将 zip 文件的内容转换为字符串。

    $originalZipFile = file_get_contents('Path/To/ZipFile');
    
  2. 将该字符串中的数据“解压缩”为一个新字符串,以公开我想要查找/替换的文本位。

    $unzippedFile = someFunction($originalZipFile);
    
  3. 查找和替换文本位。

    $processedString = str_replace($find, $replace, $unzippedFile);
    
  4. 将处理后的字符串“重新压缩”成一个新字符串。

    $rezippedFile = someOtherFunction($processedString);
    
  5. Base64 编码“rezzziped”字符串。

    $desiredOutputString = base64_encode($rezippedFile);
    

我查看了 PHP ZipArchive 类,但它似乎没有我正在寻找的功能。

非常感谢任何见解!

-奥利弗

4

1 回答 1

0

好吧,我相信我找到了一个很好的解决方案。对于寻找类似解决方案的任何其他人,我建议查看 Paul Duncan 的ZipStream-PHP类。

使用此类,您可以将文件、内容和目录动态写入 zip 文件,然后将其流式传输,而无需将文件写入磁盘。

相当自动。

于 2012-10-10T21:03:41.713 回答