首页 文章

如何在 PHP 中获取 zip 文件的目录结构?

提问于
浏览
1

zipfile.zip文件的目录结构将是

文件夹 A - >文件夹 B - >文件夹 C - > image1.png,image2.png,image3.png

以下是我尝试过的代码。但它没有回应任何东西。

$zip = zip_open('zipfile.zip'); 
while($zip_entry = zip_read($zip)){
    $filename = zip_entry_name($zip_entry);
    echo $filename."
"; }

我想要的只是 O/P

FolderArray => A,B,C

FileArray => image1.png,image2.png,image3.png。

是否可以将 O/P 作为两个数组?如何使用 PHP zip 命令区分文件和文件夹?

如何使用 php 读取此目录结构?

2 回答

  • 2

    我不太确定你想要什么,但这是一个猜测。你可以测试找到的条目是文件夹,如果它的最后一个字符是/吗?

    新的 folder.zip 内容

    New folder/New folder/New folder/New Text Document (2).txt
    New folder/New folder/New folder/New Text Document.txt
    New folder/New folder/New Text Document.txt
    

    代码

    $zip = zip_open('New folder.zip'); 
    $dirs = $files = array();
    
    if ($zip) {
        while ($zip_entry = zip_read($zip)) {
            $zen = zip_entry_name($zip_entry);
            $is_dir = substr($zen, -1) == DIRECTORY_SEPARATOR;
    
            $zen_splitted = explode(DIRECTORY_SEPARATOR, $zen);
            if ($is_dir) {
    
                $dirs[]  = $zen_splitted[count($zen_splitted)-2];
            } else {
                $files[]  = $zen_splitted[count($zen_splitted)-1];
            }
        }
    
        zip_close($zip);
    
    }
    
    print_r($dirs);
    print_r($files);
    

    输出

    Array
    (
        [0] => New folder
        [1] => New folder
        [2] => New folder
        [3] => New folder (2)
    )
    Array
    (
        [0] => New Text Document (2).txt
        [1] => New Text Document.txt
        [2] => New Text Document.txt
    )
    
  • 0
    $zip = zip_open('zipfile.zip'); 
    
    if ($zip) {
        while ($zip_entry = zip_read($zip)) {
            echo "Name:               " . zip_entry_name($zip_entry) . "\n";
            echo "Actual Filesize:    " . zip_entry_filesize($zip_entry) . "\n";
            echo "Compressed Size:    " . zip_entry_compressedsize($zip_entry) . "\n";
            echo "Compression Method: " . zip_entry_compressionmethod($zip_entry) . "\n";
    
            if (zip_entry_open($zip, $zip_entry, "r")) {
                echo "File Contents:\n";
                $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
                echo "$buf\n";
    
                zip_entry_close($zip_entry);
            }
            echo "\n";
    
        }
    
        zip_close($zip);
    
    }
    

    http://www.php.net/manual/en/zip.examples.php中提取

    注意

    但这并不支持找出它是文件夹还是文件的方法。

相关问题