2010-04-08 4 views
2

gzip으로 압축 된 여러 xml 파일을 열고 직접 구문 분석하는 간단한 스크립트를 사용하고 있습니다. 또한 ZIP 파일을 사용하여 동일한 기본 작업을 수행해야합니다. 그것은 단순해야만하는 것처럼 보이지만 어디에서나 동등한 코드처럼 보이는 것을 찾을 수 없었습니다.압축을 풀고 압축 된 파일을 반복하는 PHP 스크립트가 필요합니다.

여기에 내가 이미 뭘 오전의 간단한 버전은 다음과 같습니다

$import_file = "source.gz"; 

$sfp = gzopen($import_file, "rb"); ///// OPEN GZIPPED data 
while ($string = gzread($sfp, 4096)) { //Loop through the data 

    /// Parse Output And Do Stuff with $string 
} 
gzclose($sfp);  

무엇 압축 파일에 대해 동일한 일을 할 것인가?

답변

5

이있는 경우 PHP 5> = 5.2.0, PECL 우편> = 1.5.0는 다음 사용할 수있는 ZipArchive 도서관 - 여기 ZZIPLib

을 예입니다 :

$zip = new ZipArchive; 
if ($zip->open('source.zip') === TRUE) 
{ 
    for($i = 0; $i < $zip->numFiles; $i++) 
    { 
     $fp = $zip->getStream($zip->getNameIndex($i)); 
     if(!$fp) exit("failed\n"); 
     while (!feof($fp)) { 
      $contents = fread($fp, 8192); 
      // do some stuff 
     } 
     fclose($fp); 
    } 
} 
else 
{ 
    echo 'Error reading zip-archive!'; 
} 
+0

감사합니다 thetaiko. 나는 그것을 즉시 시도 할 것이다. -Jim –

+0

thetaiko - 이것은 내가 필요한 것입니다. 감사. 그러나 두 가지 작은 오류를 수정해야합니다. "for"루프의 closign 브래킷이 누락되어 fread에도 length 매개 변수가 필요합니다. 그 둘을 고치면 매력처럼 돌아갑니다. HTTP 및 FTP 연결에서도 작동합니까? 그렇다면 사용자 이름과 암호도 전달할 수 있습니까? 다시 한 번 감사드립니다. 짐 –

+0

흠, 정확히 말하면 HTTP 및 FTP 연결에서 작동하는지 확실하지 않습니다. 나는 당신이 그것을 어떤 길로도 통과시킬 수 있다고 생각할 것이다. 그러나 나는 그것을 시도하지 않았다. '$ zip-> open()'에'source.zip '을 전달하는 대신 다음과 같이 입력하십시오 :'$ zip-> open ('http://some.url.com/source.zip ');' – thetaiko

관련 문제