PHP 中非常规的 .ZIP 处理和查找/替换
Posted
技术标签:
【中文标题】PHP 中非常规的 .ZIP 处理和查找/替换【英文标题】:Unconventional .ZIP handling and find/replace in PHP 【发布时间】:2012-10-10 17:55:25 【问题描述】:我正在尝试使用 php 中的 .ZIP 存档来完成一项非常规的任务。我有一个用于自动化任务的 zip 存档(它是 Amazon EC2 实例的启动包),其中包含许多文本和 xml 文件。我需要做的是在这些文件中查找/替换一些文本,并使用 PHP 即时输出 BASE 64 编码字符串(而不是编写新的 .zip 文件)。
我可以毫无问题地获取文件内容并使用 file_get_contents() 和 base64_encode() 或查找/替换来对它们进行 base64 编码,这是解压缩和压缩字符串我似乎无法弄清楚.
我想避免解压缩存档、复制文件、编辑文件并将新的 .zip 文件写入磁盘,然后获取内容并对其进行编码。我希望可能有一个看起来更像这样的解决方案:
将 zip 文件的内容转换成字符串。
$originalZipFile = file_get_contents('Path/To/ZipFile');
将该字符串中的数据“解压缩”为一个新字符串,以公开我想要查找/替换的文本位。
$unzippedFile = someFunction($originalZipFile);
查找和替换文本。
$processedString = str_replace($find, $replace, $unzippedFile);
将处理后的字符串“重新压缩”成一个新的字符串。
$rezippedFile = someOtherFunction($processedString);
Base64 编码“重新压缩的”字符串。
$desiredOutputString = base64_encode($rezippedFile);
我查看了 PHP ZipArchive 类,但它似乎没有我正在寻找的功能。
非常感谢任何见解!
-奥利弗
【问题讨论】:
【参考方案1】:嗯,我相信我找到了一个很好的解决方案。对于其他寻求类似解决方案的人,我建议您查看 Paul Duncan 的 ZipStream-PHP 课程。
使用此类,您可以将文件、内容和目录动态写入 zip 文件,然后无需将文件写入磁盘即可进行流式传输。
相当自动化。
【讨论】:
以上是关于PHP 中非常规的 .ZIP 处理和查找/替换的主要内容,如果未能解决你的问题,请参考以下文章