>  기사  >  백엔드 개발  >  PHP 압축 및 보관—Zip

PHP 압축 및 보관—Zip

伊谢尔伦
伊谢尔伦원래의
2016-11-22 09:42:211318검색

이 확장 프로그램을 사용하면 ZIP 아카이브와 그 안에 있는 파일을 투명하게 읽고 쓸 수 있습니다.

PHP5.2 이후 이 기능을 사용하려면 PHP를 컴파일할 때 --enable-zip 구성 옵션을 사용하여 zip 지원을 제공해야 합니다.

예시 #1 Zip 아카이브 생성

<?php
    $zip = new ZipArchive();
    $filename = "./test112.zip";
    if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) {
        exit("cannot open <$filename>\n");
    }
    $zip->addFromString("testfilephp.txt" . time(), 
        "#1 This is a test string added as testfilephp.txt.\n");
    $zip->addFromString("testfilephp2.txt" . time(), 
        "#2 This is a test string added as testfilephp2.txt.\n");
    $zip->addFile($thisdir . "/too.php","/testfromfile.php");
    echo "numfiles: " . $zip->numFiles . "\n";
    echo "status:" . $zip->status . "\n";
    $zip->close();
?>

예시 #2 출력 문서 세부 정보 및 목록

<?php
    $za = new ZipArchive();
    $za->open(&#39;test_with_comment.zip&#39;);
    print_r($za);
    var_dump($za);
    echo "numFiles: " . $za->numFiles . "\n";
    echo "status: " . $za->status . "\n";
    echo "statusSys: " . $za->statusSys . "\n";
    echo "filename: " . $za->filename . "\n";
    echo "comment: " . $za->comment . "\n";
    for ($i=0; $i<$za->numFiles;$i++) {
        echo "index: $i\n";
        print_r($za->statIndex($i));
    }
    echo "numFile:" . $za->numFiles . "\n";
?>

예시 #3 Zip 스트림 캡슐화, OpenOffice 파일 읽기 메타 정보

<?php
    $reader = new XMLReader();
    $reader->open(&#39;zip://&#39; . dirname(__FILE__) . &#39;/test.odt#meta.xml&#39;);
    $odt_meta = array();
    while ($reader->read()) {
        if ($reader->nodeType == XMLREADER::ELEMENT) {
            $elm = $reader->name;
        } else {
            if ($reader->nodeType == XMLREADER::END_ELEMENT && $reader->name == &#39;office:meta&#39;) {
                break;
            }
            if (!trim($reader->value)) {
                continue;
            }
            $odt_meta[$elm] = $reader->value;
        }
    }
    print_r($odt_meta);
?>

이 예제에서는 ZIP 파일 아카이브를 열고 아카이브의 각 파일을 읽고 파일 내용을 출력하는 이전 API(PHP 4)를 사용합니다. 이 예제에 사용된 test2.zip 파일은 ZZIPlib 소스 배포판의 테스트 파일 중 하나입니다.

예 #4 Zip 사용 예

<?php
    $zip = zip_open("/tmp/test2.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);
    }
?>

ZipArchive 클래스

ZipArchive::addEmptyDir — 새 디렉터리 추가

ZipArchive::addFile — 추가 지정된 경로의 ZIP 아카이브에 파일

ZipArchive::addFromString — 해당 내용을 사용하여 ZIP 아카이브에 파일 추가

ZipArchive::addGlob — 글로벌 패턴으로 디렉터리에서 파일 추가

ZipArchive::addPattern — PCRE 패턴으로 디렉터리에서 파일 추가

ZipArchive::close — 활성 아카이브 닫기(열렸거나 새로 생성됨)

ZipArchive::deleteIndex — 인덱스를 사용하여 아카이브에서 항목 삭제

ZipArchive::deleteName — 이름을 사용하여 아카이브에서 항목 삭제

ZipArchive::extractTo — 아카이브 내용 추출

ZipArchive::getArchiveComment — Zip 아카이브 주석을 반환합니다.

ZipArchive::getCommentIndex — 항목 인덱스를 사용하여 항목의 주석을 반환합니다.

ZipArchive::getCommentName — 다음을 사용하여 항목의 주석을 반환합니다. 항목 이름

ZipArchive::getFromIndex — 인덱스를 사용하여 항목 내용을 반환합니다

ZipArchive::getFromName — 해당 이름을 사용하여 항목 내용을 반환합니다

ZipArchive::getNameIndex — 인덱스를 사용하여 항목 이름을 반환합니다.

ZipArchive::getStatusString — 상태 오류 메시지, 시스템 및/또는 zip 메시지를 반환합니다.

ZipArchive::getStream — 항목에 대한 파일 처리기를 가져옵니다. 이름으로 정의됨(읽기 전용).

ZipArchive::locateName — 아카이브에 있는 항목의 인덱스를 반환합니다

ZipArchive::open — ZIP 파일 아카이브 열기

ZipArchive::renameIndex — 인덱스로 정의된 항목의 이름을 바꿉니다

ZipArchive::renameName — 이름으로 정의된 항목의 이름을 바꿉니다

ZipArchive::setArchiveComment — ZIP 아카이브의 주석 설정

ZipArchive::setCommentIndex — 인덱스로 정의된 항목의 설명 설정

ZipArchive::setCommentName — 이름으로 정의된 항목의 설명 설정

ZipArchive:: statIndex — 인덱스로 정의된 항목의 세부 정보를 가져옵니다.

ZipArchive::statName — 이름으로 정의된 항목의 세부 정보를 가져옵니다.

ZipArchive::unchangeAll — 완료된 모든 변경 사항을 취소합니다. 아카이브

ZipArchive::unchangeArchive — 아카이브에서 수행된 모든 전역 변경 사항을 되돌립니다.

ZipArchive::unchangeIndex — 지정된 인덱스의 항목에 대해 수행된 모든 변경 사항을 되돌립니다

ZipArchive::unchangeName — 지정된 이름을 가진 항목에 대한 모든 변경 사항을 되돌립니다.

관련 기능

zip_close — ZIP 파일 아카이브 닫기

zip_entry_close — 디렉토리 닫기 항목

zip_entry_compressedsize — 디렉터리 항목의 압축 크기 검색

zip_entry_name — 디렉터리 항목 이름 검색

zip_entry_open — 읽을 디렉터리 항목 열기

zip_entry_read — 열린 디렉터리 항목에서 읽기

zip_open — ZIP 파일 아카이브 열기

zip_read — ZIP 파일 아카이브에서 다음 항목 읽기

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.