PHP에서 zip 파일을 처리, 특히 특정 유형의 파일 (예 : .txt 텍스트 파일)을 추출하는 것은 Ziparchive 클래스 또는 기본 Zip_Read 함수를 통해 수행 할 수 있습니다. ZipACHIVE는 더 현대적이고 사용하기 쉽지만 Zip_Read는 일부 이전 버전이나 특별한 시나리오에서 여전히 가치가 있습니다. 이 기사에서는 Zip_Read를 사용하여 Zip 파일의 모든 .txt 파일 내용을 읽는 방법을 소개합니다.
먼저 PHP 환경에서 Zip 확장이 활성화되어 있는지 확인하십시오. 다음 줄이 php.ini 에 포함되어 있는지 확인하십시오.
extension=zip
다음 PHP 코드를 실행하여 확인할 수도 있습니다.
<?php
if (!function_exists('zip_open')) {
die("ZIP 확장이 활성화되지 않았습니다!");
}
?>
다음은 zip 파일을 열고 모든 항목을 반복하는 방법을 보여주는 방법을 보여주고, extension .txt 를 사용하여 파일의 내용 만 읽으십시오.
<?php
$zipFile = '/path/to/archive.zip'; // 실제 경로로 교체하십시오
$zip = zip_open($zipFile);
if (is_resource($zip)) {
while ($entry = zip_read($zip)) {
$fileName = zip_entry_name($entry);
// 프로세스 만 .txt 문서
if (pathinfo($fileName, PATHINFO_EXTENSION) === 'txt') {
if (zip_entry_open($zip, $entry, 'r')) {
echo "读取문서: $fileName\n";
$contents = zip_entry_read($entry, zip_entry_filesize($entry));
echo "내용은 다음과 같습니다:\n$contents\n\n";
zip_entry_close($entry);
}
}
}
zip_close($zip);
} else {
echo "열 수 없습니다 ZIP 문서。\n";
}
?>
경로 확인 : Zip_entry_name ()에 의해 반환 된 파일 경로에는 디렉토리 구조가 포함되거나 경로 트래버스를 수행하려고 시도 할 수 있습니다. 보안을 사용할 때 보안을 확인하십시오.
읽기 크기 제한 : 일부 .txt 파일은 매우 클 수 있으며 메모리 오버플로를 방지하기 위해 Zip_entry_read () 시 제한해야합니다.
오류 처리 : 위의 코드에는 완전한 오류 처리 로직이 포함되어 있지 않습니다. 로그 및 예외 처리 메커니즘은 생산 환경의 특정 상황에 따라 추가되어야합니다.
사용자가 여러 .txt 파일을 포함하는 ZIP 패키지를 업로드하고 컨텐츠의 통계 또는 형식 변환을 수행 할 수있는 온라인 배치 처리 플랫폼을 개발하고 있다고 가정합니다. 위의 방법을 통해 텍스트 내용을 쉽게 추출하고 후속 처리 로직을 호출 할 수 있습니다.
이 로직을 업로드 프로세싱 스크립트에 통합 할 수 있습니다.
$uploadedZip = $_FILES['file']['tmp_name'];
// 对上传문서进行检查后调用读取函数
processTxtFilesFromZip($uploadedZip);
업로드 양식 및 보안 확인 기능을 결합하여 간단한 ZIP 파일 처리 플랫폼을 구축 할 수 있습니다. https://m66.net/tools/zip-reader를 방문하여 이러한 도구에 대한 실제 데모 및 소스 코드 참조를 얻으십시오.
Zip_Read 인터페이스는 Ziparchive 보다 약간 번거 롭지 만 Zip 파일에서 미세 작업을 수행 할 때는 여전히 참조 값입니다. zip_read 및 zip_entry_* 시리즈 기능을 합리적으로 결합하면 다양한 자동화 처리 및 배경 배치 작업을 위해 .txt 와 같은 특정 유형의 파일을 유연하게 읽을 수 있습니다.