2012-06-12 3 views
6

gzcompress (json_encode ($ arr), 9)를 사용하여 배열을 압축하고 있습니다. 그래서 배열을 json_encode로 문자열로 변환하고 gzcompress로 압축합니다. 그러나 결과 문자열의 크기에 큰 차이를 찾을 수 없습니다. 압축 크기가 488 KB이고 압축 크기가 442 KB 전입니다.PHP에서 문자열을 압축하는 가장 좋은 방법

문자열을 압축 할 수있는 방법이 있습니까?

미리 감사드립니다.

답변

10

문자열의 압축률은 압축하려는 데이터에 따라 다릅니다. 주로 무작위 데이터로 구성되는 경우 크기가 크게 향상되지 않습니다. 특정 용도로 설계된 많은 알고리즘이 있습니다.

압축 할 데이터가 주로 무엇으로 구성되어 있는지 확인한 다음 올바른 압축을 선택해야합니다.

이제는 bzcompress으로 만 연결되며, bzip은 일반적으로 gzip보다 압축률이 높습니다.

10

숫자가 맞는지 확실하지 않아 gzcompress가 gzcompress 대신 gzdeflate를 사용할 수 있습니다. gzcompress는 출력에 6 바이트, 처음에는 2 여분의 바이트를, 끝에는 4 바이트를 추가하기 때문에 gzcompress 대신 gzdeflate를 사용할 수 있습니다.

간단한 테스트는 1756800 len 문자열을 이중 압축으로 99 바이트로 압축하고 한 번 압축하면 5164 바이트를 표시합니다.

<?php 
$string = str_repeat('1234567890'.implode('', range('a', 'z')), 48800); 

echo strlen($string); //1756800 bytes 

$compressed = gzdeflate($string, 9); 
$compressed = gzdeflate($compressed, 9); 

echo '<br/>'.strlen($compressed).'<br/>';//99 bytes 

echo gzinflate(gzinflate($compressed)); 
?> 
관련 문제