使用PHP ZipArchive非常简单,但我在解压缩整个文件夹时遇到了麻烦。
$zip=new \ZipArchive;
$zip->open('zipped.docx');
$zip->extractTo('unzipped/',['word/document.xml','word/media/*']);
$zip->close();
我正在尝试解压缩一个docx文档,并提取document.xml以及与docx相关的图像的媒体文件夹。
我试过:word/media/*
,word/media/
,word/media
没有成功。
有这种可能吗?
1条答案
按热度按时间beq87vna1#
是的,可以使用PHP的ZipArchive类提取整个文件夹。但是,ZipArchive类不支持通配符模式,如“word/media/*”,用于一次提取多个文件或目录。
要解压缩“word/document.xml”文件和“word/media”文件夹及其内容,您可以执行以下步骤:
在这段代码中,我们首先使用
open()
方法打开zip文件。然后我们使用extractTo()
提取“word/document.xml”文件。接下来,我们使用
locateName()
定位“word/media/”文件夹的索引。如果找到了该文件夹,我们将从该索引开始遍历zip文件条目。对于“word/media/”文件夹中的每个条目,我们使用extractTo()
提取它。请注意,此代码假定“word/media”文件夹及其内容在DOCX文件中以可预测的方式进行结构化。如果结构发生变化或有其他特定要求,则可能需要相应地调整代码。