2012-06-12 15 views
6

私はgzcompress(json_encode($ arr)、9)で配列を圧縮しています。 私は配列をjson_encodeで文字列に変換してからgzcompressで圧縮します。 しかし、結果の文字列のサイズに大きな違いは見つかりませんでした。 圧縮サイズは488 KB前で、圧縮サイズは442 KBです。PHPで文字列を圧縮する最良の方法

文字列をさらに圧縮する方法はありますか?

ありがとうございます。

答えて

10

文字列の圧縮率は、圧縮したいデータによって異なります。それが主にランダムなデータで構成されている場合、サイズの大幅な改善は実現しません。特定の用途のために設計された多くのアルゴリズムがあります。

圧縮するデータが主にどのデータで構成されているかを確認してから、適切な圧縮を選択してください。

今私はbzcompressにしか参照できません.bzipは通常、gzipよりも高い圧縮率を持っています。

10

gzcompressが出力に6バイト、最後に2バイト、最後に余分な4バイトを追加するので、gzdepressをgzcompressの代わりに使うことができます。

簡単なテストでは、1756800のlen文字列が2倍に圧縮されて99バイトに圧縮され、1回圧縮されると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)); 
?> 
関連する問題