非常规的.ZIP处理和PHP中的查找/替换

时间:2012-10-10 17:55:25

标签: php zip base64

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

我没有问题获取文件内容和base64用file_get_contents()和base64_encode(),或者查找/替换它们,它是解压缩,并且压缩到和从字符串我似乎无法弄清楚

我想避免解压缩存档,复制文件,编辑将新.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编码“rezziped”字符串。

    $desiredOutputString = base64_encode($rezippedFile);
    
  6. 我看过PHP ZipArchive类,但它似乎没有我正在寻找的功能。

    非常感谢任何见解!

    -Oliver

1 个答案:

答案 0 :(得分:0)

嗯,我相信我找到了一个很好的解决方案。对于寻找类似解决方案的其他人,我建议您查看Paul Duncan撰写的ZipStream-PHP课程。

使用此类,您可以将文件,内容和目录动态写入zip文件,然后在不将文件写入磁盘的情况下进行流式传输。

非常自动化。