【问题标题】:PHP and ZIP creation: Can standard zip "options" be appliedPHP 和 ZIP 创建:可以应用标准 zip“选项”
【发布时间】:2012-05-24 07:17:04
【问题描述】:

有谁知道在创建 zip 文件时如何使用 PHP ZIP 函数来应用标准 zipoptions”。到目前为止,我的所有搜索都没有出现任何结果。

我对应用“-ll”和“-l”选项特别感兴趣,因此我可以提供基于压缩文本的文件的 WIN 或 NIX 版本(cgi 和 php 以及文本文件等)来自 nix 网站。内容将被即时压缩,其中包含为每个特定客户添加的一些文件。

我知道构建和使用命令行 'back-ticked' (Perl) 或 "passthru(.)" (php) 方法,但我希望有使用纯 php 即 ZipArchive() 的技巧。

问候。

【问题讨论】:

  • 你不能只为-lstr_replace("\r\n", "\n", $fileContents)-ll 提供str_replace("\n", "\r\n", $fileContents) 吗?这基本上就是选项的作用。显然, zip 操作之前。

标签: php zip options


【解决方案1】:

我认为 str_replace() 非常明显。但是,这对大文件来说是内存密集型的。

我不会显示所有代码,但是 php 有一个很少使用的功能,您可以将“过滤器”应用于流,并且可以将过滤器指定为文件 url 的一部分。它是挂钩某些文件系统操作的好方法,否则无法轻松调整行为。

使用stream_filter_register() 定义过滤器后,您应该能够将php://filter/string.to_unix_line_endings/resource=/path/to/the/file.txt 之类的文件url 传递给ZipArchive::addFile() 方法。

最终,您也可以只创建一个临时文件,并将文件内容以块的形式复制到其中,然后进行 str_replacing,然后将临时文件名也传递给 ZipArchive::addFile() 方法。这样会更容易编码。

【讨论】:

    【解决方案2】:

    您最终可能会退回到 shell_exec 并仅使用本机系统执行 zip,然后您可以根据需要传递 -ll 或 -l。 http://php.net/manual/function.shell-exec.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-28
      • 2011-04-28
      • 1970-01-01
      • 2011-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-11
      相关资源
      最近更新 更多