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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于php编写的图床工具源码.zip **PicUploader** 是一个用php编写的图床工具,它能帮助你快速上传你的图片到云图床,并自动返回Markdown格式链接到剪贴板。配置完成后,要获取一个可用于markdown的图片外链只需要: - **方式一:** 右击电脑本地任意格式文件→点击`你的自定义上传菜单`→系统通知文件上传成功→到Markdown编辑器中粘贴! - **方式二:** 截图并点击复制到剪贴板→按快捷键→系统通知图片上传成功→到Markdown编辑器中粘贴! - **方式三:** 右击网页中的图片→点击`复制图片`→按上传快捷键→系统弹出上传成功通知→到Markdown编辑器中粘贴! - **方式四:** 使用网页版上传,包括拖放上传(支持多文件)、复制本地图片文件后粘贴上传、截图后粘贴上传、复制网页上的图片后粘贴上传、点击上传按钮选择图片后上传(支持多文件)。 ## 主要功能 - 支持Mac和Windows(也可用于Linux服务器端)、理论上也支持Linux桌面版,只要你能添加右键菜单或者用快捷键调用上传命令的话; - 支持图片压缩后上传(支持jpg/png/webp,gif/bmp不支持压缩); - 支持添加水印后上传(支持文字水印、图片水印、自定义水印颜色/透明度/角度/位置,支持jpg/png/bmp/webp,gif不支持水印); - 返回的链接可自定义(如原始链接、Markdown格式链接、可点击的Markdown格式链接、完全自定义的链接); - 完全自定义上传文件名(可选变量有当前年、月、日、当前时间戳,随机字符串(可调长度)); - 上传过的文件直接返回历史记录(防止重复上传,仅限在不添加水印不压缩的情况下); - 可作为MWeb/Typora的API使用,可作为PicGo/ShareX/uPic等的自定义图床使用; - 支持快捷键上传剪贴板中的图片(配合Alfred/WinHotKey使用); - 支持Web端拖放、粘贴、或直接选择上传图片; - 支持Web端设置所有参数; - 支持上传任意格式文件(除了图片,还可以上传任意格式文件,只要你的存储端支持就行); - 目前支持的图床:七牛、腾讯、网易、百度、京东、阿里、又拍、sm.ms、Imgur、Ucloud、青云、Nextcloud、Github、Gitee(码云)、Cloudinary、Chevereto、Minio、Aws s3、金山、华为、DropBox、OneDrive、GoogleDrive、Azure、Gitlab、图速云、个人服务器(sftp)、本地(即PicUploader所在机器)。 - 注:之前支持的coding.net由于封了token方式授权的接口,所以现在暂时不支持coding.net。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值