php字符串压缩方法

 PHP进阶  2021-06-01  admin  2098  2832

gzencode 默认使用ZLIB_ENCODING_GZIP编码,使用gzip压缩格式,实际上是使用defalte 算法压缩数据,然后加上文件头和adler32校验

gzdeflate 默认使用ZLIB_ENCODING_RAW编码方式,使用deflate数据压缩算法,实际上是先用 LZ77 压缩,然后用霍夫曼编码压缩

gzcompress ;默认使用ZLIB_ENCODING_DEFLATE编码,使用zlib压缩格式,实际上是用 deflate 压缩数据,然后加上 zlib 头和 CRC 校验


三个函数的比较实质上是三种压缩方法:deflate, zlib, gzip的比较。

从性能的维度看:deflate 好于 gzip 好于 zlib

从文本文件默认压缩率压缩后体积的维度看:deflate 好于 zlib 好于 gzip

$test_string = 'ab   cde  fgh   ijk  lmn   opqrstuvwxyz 0111123456  7899  99';
var_dump($test_string); //原字符串长度

var_dump(gzcompress($test_string,9)); //gzcompress压缩后
var_dump(gzdeflate($test_string,9)); //gzdeflate压缩后
var_dump(gzencode($test_string,9)); //gzencode压缩后

var_dump(gzuncompress(gzcompress($test_string))); //gzcompress压缩后再解压缩回来
var_dump(gzinflate(gzdeflate($test_string))); //gzdeflate压缩后再解压缩回来
var_dump(gzdecode(gzencode($test_string))); //gzencode压缩后再解压缩回来


php5.4以后提供了 zlib_encode() 函数,第二个参数指定压缩的方式

ZLIB_ENCODING_RAW

ZLIB_ENCODING_DEFLATE 

ZLIB_ENCODING_GZIP

$str = 'hello world';
$enc = zlib_encode($str, ZLIB_ENCODING_DEFLATE);

对应的解码函数

zlib_decode ( string $data , int $max_length = 0 ) : string|false


如果文章对您有帮助,点击下方的广告,支持一下作者吧!

转载必须注明出处:

php字符串压缩方法 —— code.cent123.com