현재 위치: > 최신 기사 목록> php의 zip_read () 함수를 사용하여 zip 파일에서 각 파일을 읽고 추출하는 방법은 무엇입니까?

php의 zip_read () 함수를 사용하여 zip 파일에서 각 파일을 읽고 추출하는 방법은 무엇입니까?

M66 2025-06-23

PHP에서 zip 압축 파일을 처리하는 것은 일반적인 작업입니다. 특히 업로드 파일 또는 자동 아카이브를 처리 할 때 유용합니다. PHP의 zip 확장은 Zip 파일을 조작하기위한 완전한 API 세트를 제공하며, 여기서 Zip_Read ()는 zip 파일의 항목을 가로 지르는 데 사용되는 핵심 기능입니다. 이 기사는 Zip_Read () 함수를 사용하여 각 파일 내용을 ZIP 파일에서 하나씩 읽고 추출하는 방법을 보여줍니다.

1. 환경 준비

시작하기 전에 PHP 환경에 지퍼 확장이 활성화되어 있는지 확인하십시오. 활성화 여부를 확인할 수 있습니다.

 <?php
phpinfo();
?>

페이지에서 zip을 검색하면 존재하면 활성화됩니다. 그렇지 않은 경우 운영 체제에 따라 확장을 설치하고 활성화하십시오.

2. 기본 프로세스 개요

zip_read ()를 사용하는 기본 단계는 다음과 같습니다.

  1. zip_open ()을 사용하여 zip 파일을 엽니 다.

  2. zip_read ()를 사용하여 각 항목을 가로 지르십시오.

  3. zip_entry_name ()을 사용하여 입력 이름을 얻으십시오.

  4. zip_entry_open ()zip_entry_read ()를 사용하여 항목 내용을 읽으십시오.

  5. 선택 사항 : 추출 작업을 수행하기 위해 파일에 읽기 내용을 작성하십시오.

3. 샘플 코드 분석

다음은 지정된 디렉토리에 zip 파일의 각 파일을 하나씩 읽고 추출하는 완전한 예입니다.

 <?php

$zipFile = 'archive.zip'; // 파일이 현재 디렉토리에 있다고 가정하십시오
$extractTo = 'extracted_files/';

// 대상 디렉토리가 있는지 확인하십시오
if (!is_dir($extractTo)) {
    mkdir($extractTo, 0755, true);
}

// 열려 있는 ZIP 문서
$zip = zip_open($zipFile);

if (is_resource($zip)) {
    while ($zipEntry = zip_read($zip)) {
        $entryName = zip_entry_name($zipEntry);
        $entryPath = $extractTo . $entryName;

        // 디렉토리 항목을 무시합니다,仅处理문서
        if (substr($entryName, -1) === '/') {
            continue;
        }

        // 尝试열려 있는条目
        if (zip_entry_open($zip, $zipEntry, "r")) {
            $entryContent = zip_entry_read($zipEntry, zip_entry_filesize($zipEntry));

            // 디렉토리 구조가 있는지 확인하십시오
            $dir = dirname($entryPath);
            if (!is_dir($dir)) {
                mkdir($dir, 0755, true);
            }

            // 写入到문서
            file_put_contents($entryPath, $entryContent);

            // 선택 과목:输出当前处理的문서
            echo "已提取문서: $entryName<br>";
            zip_entry_close($zipEntry);
        }
    }
    zip_close($zip);
    echo "ZIP 문서处理完成。";
} else {
    echo "无法열려 있는 ZIP 문서。";
}
?>

4. 주목할만한 것들

  • Zip_Read ()는 한 번에 하나의 항목을 읽고 모든 항목을 읽으려면 루프에서 여러 번 호출해야합니다.

  • zip_entry_filesize ()를 사용하여 파일 크기를 통해 전체 컨텐츠를 읽으십시오.

  • 항목의 내용을 읽으려면 zip_entry_open ()을 사용해야합니다.

  • ZIP 파일에 여러 개의 디렉토리가있는 경우, 추출 전에 디렉토리 구조가 있는지 확인하십시오.

5. 응용 프로그램 시나리오의 예

  1. 온라인 문서 감압 처리 : 압축 패키지를 업로드 한 후 서버 별 디렉토리로 자동으로 압축 해제합니다.

  2. 배치 이미지 처리 : 사용자가 업로드 한 zip 파일에서 사진을 닫고 후속 처리를 위해 / 업로드 / 디렉토리에 저장하십시오.

  3. 컨텐츠 백업 및 복원 : 시스템은 데이터 백업을 자동으로 패키지하고 파일 별 추출 및 복구를 지원합니다.

6. 확장 된 독서