php:字符串压缩工具

最近在做一个数据导出的管理工具,有用到字符串压缩,所以记录下,也希望给其他人带来方便。

一、压缩函数有哪些?

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);
    }    
}

猜你喜欢

转载自blog.csdn.net/panjiapengfly/article/details/126914559
今日推荐