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."<br/>"; 
}

O/Pとして欲しいのは

FolderArray => A、B、C

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

O/P を 2 つの配列として取得することは可能ですか? PHP zip コマンドを使用してファイルとフォルダーを区別するにはどうすればよいですか?

php を使用してこのディレクトリ構造を読み取るにはどうすればよいですか?

4

2 に答える 2

2

あなたが何を望んでいるのかよくわかりませんが、ここに1つの推測があります。最後の文字が の場合、見つかったエントリがフォルダであることをテストできます/か?

新しい 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
)
于 2013-09-16T11:44:43.667 に答える
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から抽出

ノート

しかし、これは、それがフォルダーなのかファイルなのかを判断する方法をサポートしていません。

于 2013-09-16T10:00:08.790 に答える