最近在做一个数据导出的管理工具,有用到字符串压缩,所以记录下,也希望给其他人带来方便。
一、压缩函数有哪些?
gzcompress:使用 ZLIB 数据格式 压缩给定的字符串
gzencode:创建一个字符串gzip压缩
gzdeflate:缩小一个字符串
bzcompress:把一个字符串压缩成 bzip2 编码数据
效率对比:
gzcompress 速度最快,压缩比率较高。
gzdeflate 压缩比率最高,速度稍慢于gzcompress
gzencode 与 gzdeflate 比较接近,gzdeflate稍有优势
bzcompress 速度最慢,压缩比率最慢。
注:其中值得一提的是gzencode,可以输出一个兼容gzip格式的压缩,如果输出在浏览器上,可以与HTTP协议上的GZIP编码契合,可以使用header('Content-Encoding: gzip');直接输出,而不用解压。
二、demo
<?php
/**
* 压缩工具
*
* ===================================================
*
* gzcompress 速度最快,压缩比率较高。
* gzdeflate 压缩比率最高,速度稍慢于gzcompress
* gzencode 与 gzdeflate 比较接近,gzdeflate稍有优势
* bzcompress 速度最慢,压缩比率最慢。
*
* 因此建议使用 gzcompress 和 gzdeflate
*
* ===================================================
*
* @package Tool
* @author 蝶开三月
*/
class Tool_Compress {
/**
* 压缩(gzcompress)
*
* @param string $str 要压缩的字符串
* @param int $level 压缩级别。可以指定为0(表示无压缩),指定为9(表示最大压缩)
* @return string
*/
public static function funcGzcompress($str, $level = 9){
return gzcompress($str, $level);
}
/**
* 解压(gzuncompress)
*
* @param string $str 要解压的字符串
* @return string
*/
public static function funcGzuncompress($str){
return gzuncompress($str);
}
/**
* 压缩(gzdeflate)
*
* @param string $str 要压缩的字符串
* @param int $level 压缩级别。可以指定为0(表示无压缩),指定为9(表示最大压缩)
* @return string
*/
public static function funcGzdeflate($str, $level = 9){
return gzdeflate($str, $level);
}
/**
* 解压(gzinflate)
*
* @param string $str 要解压的字符串
* @return string
*/
public static function funcGzinflate($str){
return gzinflate($str);
}
/**
* 压缩(gzencode)
* 因为是与gzip程序输出兼容的压缩版本,可以与HTTP协议上的GZIP编码契合,可以使用header('Content-Encoding: gzip');直接输出,而不用解压
*
* @param string $str 要压缩的字符串
* @param int $level 压缩级别。可以指定为0(表示无压缩),指定为9(表示最大压缩)
* @return string
*/
public static function funcGzencode($str, $level = 9){
return gzencode($str, $level);
}
/**
* 解压(gzdecode)
*
* @param string $str 要解压的字符串
* @return string
*/
public static function funcGzdecode($str){
return gzdecode($str);
}
/**
* 压缩(bzcompress)
*
* @param string $str 要压缩的字符串
* @param int $level 压缩级别。可以指定为0(表示无压缩),指定为9(表示最大压缩)
* @return string
*/
public static function funcBzcompress($str, $level = 9){
return bzcompress($str, $level);
}
/**
* 解压(bzdecompress)
*
* @param string $str 要解压的字符串
* @return string
*/
public static function funcBzdecompress($str){
return bzdecompress($str);
}
}