您的足迹:首页 > php知识 >php字符串压缩gzip

php字符串压缩gzip

在PHP中偶尔遇到字符串的压缩,比如一个长字符串,数据库开始设计的字段存不下,但是又不想改数据库字段存储长度,就可以用压缩的方式降低数据字段字符串的长度数量级,把几百个字符的字符串压缩到几十个字符。总结下来有以下几个:
压缩函数:gzcompress gzdeflate gzencode
与之对应的解压函数如下:
解压函数:gzuncompress gzinflate gzdecode
特别注意:gzdecode是PHP 5.4.0之后才加入的,使用的时候要注意兼容性问题。
gzcompress gzdeflate gzencode函数的区别在于它们压缩的数据格式不同:
gzcompress使用的是ZLIB格式;
gzdeflate使用的是纯粹的DEFLATE格式;
gzencode使用的是GZIP格式;
<?php
$test_string="123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789";
var_dump($test_string);//原字符串长度

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

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

:压缩后的结果直接用浏览器查看或者复制到文本是不对的,很多字符显示不出来,解决办法是可以用file_out_contents直接输出到文本文件(txt,log);

当在curl中时:
curl_setopt($ch,CURLOPT_HTTPHEADER,array('Accept-Encoding: gzip','Accept-Encoding:gzip'));//此处是告诉对方采用gzip压缩传输数据
curl_setopt($c, CURLOPT_ENCODING, 'gzip,deflate');//这个是解释gzip内容,解决gzip压缩返回出现乱码

相关推荐

网友评论(0)