PHP로 압축을 풀 때 왜곡된 우편번호에 대한 해결 방법: 먼저 해당 PHP 파일을 연 다음 PHP의 zip 캡슐화 프로토콜을 사용하여 압축을 풀어 왜곡된 ZipArchive 코드를 해결합니다.
이 글의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터
php 압축 해제된 zip 파일이 깨지는 문제
공식 운영 방법:
<?php $zip = new \ZipArchive; $zipfile = "./test.zip"; $res = $zip->open($zipfile); $toDir = "./test"; $s = $zip->extractTo($toDir); print_r(scandir($toDir));
기존 문제
zip이 압축되지 않은 경우 Windows 플랫폼에서 압축된 경우 Linux 서버에서 위 코드를 실행하면 문자가 깨져서 압축이 풀린 파일도 누락됩니다. 해결 방법 파일 시스템은 gbk로 인코딩되어 있고 PHP ZipArchive의 파일 이름은 UTF-입니다. 8 인코딩되었습니다. Zip 아카이브의 파일 이름에 중국어와 같은 특수 문자가 포함되어 있는 경우, 왜곡된 문자의 압축을 풀기 위해 PHP ZipArchive를 사용하는 것은 불가피합니다. ZipArchive 압축 파일이 왜곡되거나 압축할 수 없는 경우에도 동일한 이유가 적용됩니다.
해결책ZipArchive 문서의 압축을 풀기 위해 내장된 ZipArchive::extractTo() 메서드를 사용하지 마세요. 대신 PHP의 zip 캡슐화 프로토콜을 사용하여 ZipArchive의 압축을 풀세요. 파일이 깨졌습니다.
코드 풀기
<?php $zip = new \ZipArchive; $zipfile = "./test.zip"; $res = $zip->open($zipfile); $toDir = "./test"; if(!file_exists($toDir)) { mkdir($toDir); } $docnum = $zip->numFiles; for($i = 0; $i < $docnum; $i++) { $statInfo = $zip->statIndex($i); if($statInfo['crc'] == 0) { //新建目录 mkdir($toDir.'/'.substr($statInfo['name'], 0,-1)); } else { //拷贝文件 copy('zip://'.$zipfile.'#'.$statInfo['name'], $toDir.'/'.$statInfo['name']); } } print_r(scandir($toDir));
추천 학습: "
PHP 비디오 튜토리얼"
위 내용은 PHP 압축 해제 zip이 깨졌을 경우 어떻게 해야 할까요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!