使用PHP解压缩子目录

时间:2015-04-20 08:26:20

标签: php compression zip unzip ziparchive

我有一个包含子目录的zip文件。我使用php extractTo()函数解压缩它,但我只从root获取文件,我无法获取子目录中的文件。

我的Zip文件具有以下结构:

-Json
  - 01.json
  - 02.json
  - 03.json
  - URL
     - url1.json
     - url2.json
  - seeker
     - seek1.json
     - seek.json

我的代码是:

$zip = new ZipArchive();
$zip->open($nombrezip);
$zip->extractTo($destino);
$zip->close();

所以我需要解压缩内部的文件" URL"和"寻求者"。

1 个答案:

答案 0 :(得分:1)

所以,让我们说你有一个ZipFile: test.zip

结构:

(?<=\b\d+\.)0+(?=\d+\b)

要保持ZIP结构,您可以这样做:

- file1.txt
- file1.txt
- - dir1/
- - - file3.txt
- - - file4.txt
- - dir2/
- - - file5.txt
- - - file6.txt

这与做

相同
<?php
$zip = new ZipArchive;
$res = $zip->open('test.zip');
if ($res === TRUE) {
    $zip->extractTo('./test', array('file1.txt', 'file2.txt'));
    $zip->extractTo('./test', array('dir1/file3.txt', 'dir1/file4.txt'));
    $zip->extractTo('./test', array('dir2/file5.txt', 'dir2/file6.txt'));
    $zip->close();
    echo 'ok';
} else {
    echo 'failed';
}
?>

但是如果您有一个带有此结构的 test.zip 文件:

<?php
$zip = new ZipArchive;
$res = $zip->open('test.zip');
if ($res === TRUE) {
    $zip->extractTo('./test');
    $zip->close();
    echo 'ok';
} else {
    echo 'failed';
}
?>

并且您希望像以前一样获得输出结构,您可以这样做:

- file1.txt
- file1.txt
- file3.txt
- file4.txt
- file5.txt
- file6.txt