我有一个包含一个文件夹中的zip文件,包含多个文件夹和文件,像这样从文件夹中的文件:PHP - 提取一个zip
myfile.zip
-firstlevel
--folder1
- -folder2
--folder3
--file1
--file2
现在,我想提取使用PHP的ZipArchive这个文件,但没有“firstlevel “文件夹。目前,结果是这样的:
目的地/ firstlevel /文件夹1
目的地/ firstlevel /文件夹2
...
我想有是这样的结果是:
目的地/文件夹1
目的地/文件夹2
...
我已经试过extractTo,其生产的第一提及结果和复制(),如建议here,但这似乎不工作。
我当前的代码是在这里:
if($zip->open('myfile.zip') === true) {
$firstlevel = $zip->getNameIndex(0);
for($i = 0; $i < $zip->numFiles; $i++) {
$entry = $zip->getNameIndex($i);
$pos = strpos($entry, $firstlevel);
if ($pos !== false) {
$file = substr($entry, strlen($firstlevel));
if(strlen($file) > 0){
$files[] = $file;
}
}
}
//attempt 1 (extractTo):
//$zip->extractTo('./test', $files);
//attempt 2 (copy):
foreach($files as $filename){
copy('zip://'.$firstlevel.'/'.$filename, 'test/'.$filename);
}
}
我如何能实现我的目标,结果呢?
现在情况如何?这些文件是否始终与顶层文件夹一起出现,或者文件是否以不同的方式出现?你怎么知道顶层将永远是空的? – 2013-03-10 16:50:20
准确地说:这些文件总是带有顶层文件夹,在服务器上解压缩文件时我不需要它们。 – Harmageddon 2013-03-10 20:11:37