我正在使用 gzcompress(json_encode($arr),9) 压缩数组。所以我用 json_encode 将数组转换为字符串,然后用 gzcompress 压缩。但我找不到结果字符串的大小有太大差异。压缩前大小为 488 KB,压缩后大小为 442 KB。
有什么办法可以进一步压缩字符串吗?
提前致谢。
我正在使用 gzcompress(json_encode($arr),9) 压缩数组。所以我用 json_encode 将数组转换为字符串,然后用 gzcompress 压缩。但我找不到结果字符串的大小有太大差异。压缩前大小为 488 KB,压缩后大小为 442 KB。
有什么办法可以进一步压缩字符串吗?
提前致谢。
我不确定您的数字是否正确,但您可以使用gzdeflate
而不是gzcompress
asgzcompress
在输出中添加 6 个字节(开头有 2 个额外字节,结尾有 4 个额外字节)。
一个简单的测试显示一个长度为 1756800 的字符串通过双重压缩压缩为 99 个字节,如果压缩一次则为 5164 个字节。
$string = str_repeat('1234567890' . implode('', range('a', 'z')), 48800);
echo strlen($string); //1756800 bytes
$compressed = gzdeflate($string, 9);
$compressed = gzdeflate($compressed, 9);
echo strlen($compressed); //99 bytes
echo gzinflate(gzinflate($compressed));
字符串的压缩程度取决于您要压缩的数据。如果它主要由随机数据组成,那么您将不会在大小上取得那么大的改进。有许多算法是为特定用途而设计的。
您应该尝试确定要压缩的数据主要包含哪些内容,然后选择适当的压缩方式。
刚才我只能给你推荐 bzcompress,bzip 的压缩率通常比 gzip 高。