Php 拔出拉链';s文件名,其中根是目录

Php 拔出拉链';s文件名,其中根是目录,php,zip,Php,Zip,您好,我正在寻找一种方法来提取ZIP的文件名,并在我的网站上创建一个ZIP内容树。我不想提取文件本身,我只想在zip文件中循环并打印出它的内容 这包括,子文件夹等。 我找到了一个很好的答案,使用以下代码作为解决方案: $zip = new ZipArchive; if ($zip->open('source.zip') === TRUE) { for($i = 0; $i < $zip->numFiles; $i++) { $f

您好,我正在寻找一种方法来提取ZIP的文件名,并在我的网站上创建一个ZIP内容树。我不想提取文件本身,我只想在zip文件中循环并打印出它的内容

这包括,子文件夹等。 我找到了一个很好的答案,使用以下代码作为解决方案:

$zip = new ZipArchive; 
if ($zip->open('source.zip') === TRUE) 
{ 
     for($i = 0; $i < $zip->numFiles; $i++) 
     {   
        $fp = $zip->getStream($zip->getNameIndex($i));
        if(!$fp) exit("failed\n");
        while (!feof($fp)) {
            $contents = fread($fp, 8192);
            // do some stuff
        }
        fclose($fp);
     }
} 
else 
{ 
     echo 'Error reading zip-archive!'; 
} 
$zip=新的ZipArchive;
如果($zip->open('source.zip')==TRUE)
{ 
对于($i=0;$i<$zip->numFiles;$i++)
{   
$fp=$zip->getStream($zip->getNameIndex($i));
如果(!$fp)退出(“失败”\n);
而(!feof($fp)){
$contents=fread($fp,8192);
//做点什么
}
fclose($fp);
}
} 
其他的
{ 
echo“读取zip存档文件时出错!”;
} 
但这对子目录不起作用

但我发现的另一个差距是,如果整个zip存档只有一个根目录,并且在这个目录中有所有其他文件,那么$zip->numFiles方法将返回0,因此循环(在上面的示例中)将不会运行

所以总的来说,我认为这并不总是有效的。我认为一个解决方案是递归,但这将很难实现,所以我正在寻找替代方案