我有一个远程 ZIP 文件,我需要读取位于 zip 文件中的文件内容,而不必将 zip 文件复制到我们的服务器。应该有一些解决方案来解决这个问题,但我找不到。
示例:
URL - http://example.com/feed.zip并且
ZIP 存档中的文件是 feed.xml
我需要读取内容feed.xml并将其保存在一个变量中。就是这样。
我尝试使用$z = new ZipArchive();并打开,但打开只能从服务器读取文件而不是远程文件。
一个超级懒惰的解决方案是:
$feed = `wget http://example.com/feed.zip -qO- | unzip - -p feed.xml`;
Run Code Online (Sandbox Code Playgroud)
请注意,如果 url 不是固定字符串,则应对其进行转义 (escapeshellarg)。
但是您也可以研究除内置 ZipArchive 之外的其他 ZIP 类。PEAR 或 PclZip 可能允许在没有变通方法的情况下从流中读取。(但 php://memory 或字符串流包装器也可能是可行的,如果你真的一心想避开临时文件。)