在PHP中压缩字符串的最佳方法

MAN*_*OPE 10 php compression string

我用gzcompress压缩数组(json_encode($ arr),9).所以我使用json_encode将数组转换为字符串,然后使用gzcompress进行压缩.但我发现结果字符串的大小差别不大.在压缩大小为488 KB之前,压缩大小为442 KB之前.

有什么方法可以进一步压缩字符串吗?

提前致谢.

Law*_*one 16

我不确定你的数字是否正确,你可以使用gzdeflate而不是gzcompress,因为gzcompress会在输出中添加6个字节,在开头添加2个额外字节,在结尾添加4个额外字节.

一个简单的测试显示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));
?>
Run Code Online (Sandbox Code Playgroud)


Cor*_*air 15

字符串压缩的好坏取决于要压缩的数据.如果它主要由随机数据组成,那么您将无法在规模上实现那么大的改进.有许多算法专门针对特定用途而设计.

您应该尝试确定要压缩的数据主要包含哪些内容,然后选择适当的压缩.

刚才我只能将你推荐给bzcompress,bzip的压缩率通常比gzip高.