PHP의 zip_read() 함수는 이미 열려 있는 ZIP 파일 아카이브에서 다음 항목(엔트리)을 하나씩 순서대로 읽어 들이는 함수입니다. 주로 zip_open()으로 아카이브를 연 뒤, 반복문과 함께 사용하여 압축 파일에 포함된 모든 파일 목록을 차례로 조회할 때 활용됩니다.
문법
zip_read(zip)
매개변수
zip − 읽어 들일 ZIP 리소스입니다. 일반적으로
zip_open()이 반환한 아카이브 리소스를 전달합니다.
반환 값
성공하면 ZIP 아카이브 내부의 파일 정보를 담고 있는 리소스(resource)를 반환합니다. 더 이상 읽을 항목이 없거나 오류가 발생한 경우에는 false를 반환합니다.
예제 소개
아래 예제에서는 다음과 같은 파일들이 포함된 ZIP 파일 "new.zip"을 사용합니다.
amit.txt
peter.txt
result.html
demo.java
settings.ini
코드 예제
이제 실제 동작 예제를 살펴보겠습니다. 반복문 안에서 zip_read()를 호출하여 아카이브의 모든 항목을 순회하고, 각 항목의 파일 이름을 출력하는 코드입니다.
<?php
$zip = zip_open("new.zip");
if ($zip) {
while ($zip_entry = zip_read($zip)) {
echo "File Name = ". zip_entry_filename($zip_entry). "<br/>";
}
zip_close($zip);
}
?>
실행 결과
File Name = amit.txt
File Name = peter.txt
File Name = result.html
File Name = demo.java
File Name = settings.ini
참고 사항
zip_read()를 비롯한 zip_open(), zip_entry_filename() 같은 구형 절차적(procedural) ZIP 함수들은 PHP 8.0부터 폐기(deprecated) 상태에 있습니다. 최신 프로젝트에서는 객체 지향 방식의 ZipArchive 클래스(예: $zip->getNumFiles(), $zip->getNameIndex())를 사용하는 것이 권장되므로, 기존 코드를 유지 보수할 때는 이 점을 참고하시기 바랍니다.