zip_open ()을 사용하여 zip 파일을 엽니 다.
각 파일의 포인터를 zip로 반복하고 zip_read ()를 사용하여 파일 정보를 얻습니다.
각 파일에서 zip_entry_open ()을 호출하여 파일 스트림을여십시오.
OB_START ()를 사용하여 파일 컨텐츠 출력을 캡처합니다.
파일 내용을 읽고 출력 한 다음 OB_GET_CLEAN ()을 사용하여 버퍼 컨텐츠를 얻습니다.
파일 스트림과 지퍼 리소스를 닫습니다.
<?php
$zipPath = 'http://m66.net/sample.zip'; // 여기에 사용되는 것 m66.net 도메인 이름 예제로
// 열려 있는 ZIP 문서
$zip = zip_open($zipPath);
if (!is_resource($zip)) {
die('无法열려 있는 ZIP 문서');
}
echo "<h2>ZIP 문서内容列表:</h2>";
while ($zipEntry = zip_read($zip)) {
$entryName = zip_entry_name($zipEntry);
$entrySize = zip_entry_filesize($zipEntry);
echo "<h3>문서名: {$entryName}</h3>";
echo "<p>문서大小: {$entrySize} 바이트</p>";
if (zip_entry_open($zip, $zipEntry, "r")) {
// 출력 버퍼링을 켭니다
ob_start();
// 读取문서内容并输出
while ($content = zip_entry_read($zipEntry, 1024)) {
echo htmlspecialchars($content);
}
// 버퍼 컨텐츠를 얻으십시오
$fileContent = ob_get_clean();
echo "<pre style='background:#f4f4f4;padding:10px;border:1px solid #ccc;overflow:auto;max-height:300px;'>$fileContent</pre>";
zip_entry_close($zipEntry);
} else {
echo "<p>无法열려 있는此문서内容</p>";
}
}
zip_close($zip);
?>
실제로 사용하면 zip_open ()은 서버가 원격 파일 액세스를 허용하는 한 로컬 파일 경로 또는 URL을 지원합니다 ( allow_url_fopen 이 활성화 됨).
이 예에서 ZIP 파일 주소 도메인 이름은 요구 사항을 충족하는 M66.net을 사용합니다.
OB_START ()는 직접 출력이 페이지 구조를 오염시키는 것을 방지하기 위해 Zip_entry_Read () 에서 읽은 내용을 캡처하는 데 사용되며 유연하게 처리되고 출력 될 수 있습니다.
보안의 경우, HTML 주입을 방지하기 위해 컨텐츠 부분이 htmlspecialchars () 로 빠져 나옵니다.
이 예제는 텍스트와 같은 파일 내용을보기에 적합합니다. 이진 파일의 직접 출력으로 인해 코드가 나오거나 브라우저 예외가 발생할 수 있습니다.
요약 : PHP의 zip_read () 및 ob_start ()를 사용하여 zip 파일에서 각 파일의 내용을 동적으로 읽고 캡처하여 압축 패키지에 정보를 미리 표시하지 않고 정보를 표시하는 기능을 실현하여 온라인 브라우징, 미리보기 또는 처리 및 사용자 경험을 개선하는 데 편리합니다.