PHP的LZF压缩扩展工具

PHP的LZF压缩扩展工具

这次为大家带来的是另外一个 PHP 的压缩扩展,当然也是非常冷门的一种压缩格式,所以使用的人会比较少,而且在 PHP 中提供的相关的函数也只是对字符串的编码与解码,并没有针对文件的操作。因此,就像 Bzip2 一样,我们也可以用它来进行一些加密传输的操作。

LZF 扩展直接在 phar.php.net 下载安装即可,也是走得正常的 PHP 的扩展安装的步骤。LZF 压缩算法基于 Lempel-Ziv ,并使用了有限状态熵编码。LZF采用类似 lz77 和 lzss 的混合编码。使用3种 “起始标记” 来代表每段输出的数据串。关于 LZF 压缩的信息非常少,仅有的查询结果显示是它是 Apple 开源的一种非常简单的字符压缩算法。

基本函数使用

$str = "The 2014 World Cup will be hold in .It is a grand occasion for all the football fans all over the world.My favorite team is the Spainish Team.And my favorite football star is Didier Yves Drogba Tébily.I hope the Chinese Tee
am can do well in the World Cup.Because China has never won a World Cup before.This year I hope the situation will change.

When the match begins, I hope I can watch it.But if I am busy studying thenn
 I will not watch it.Because study is always the first priority.I wish one day China can hold a World Cup, then our Chinese can watch the matches withouu
t going abroad.

Maybe one day my dream can come true.";

$c = lzf_compress($str);
echo $c, PHP_EOL;
// The 2014 World Cup will be ho in .It is a grand occasion for a *t Bfootb@
//                                                                          fan * over`w@X.My
// vorite team@Q@8 Spainish T .A _m�)�Vstar@2Didi WYves Drogba Tébily.I �p \ �Chchange.  can do we � �@��.Becau )@1a has ne@�w �a�'! �e.Thye ��msituatAa9

// When`omatch Cgins,�;I`�w`it.Bu!ff !busy �udying@Bn `]not�2��s@)Aalways@0  first priAsAwAeone day��Aa��� �!"n our`%AG@'�� ��!witho �go@�abroad@�May"=�i!�dr!�`Dcom!�rue.

$v = lzf_decompress($c);
echo $v, PHP_EOL;
// The 2014 World Cup will be hold in .It is a grand occasion for all the football fans all over the world.My favorite team is the Spainish Team.And my favorite football star is Didier Yves Drogba Tébily.I hope the Chinese Team can do well in the World Cup.Because China has never won a World Cup before.This year I hope the situation will change.

// When the match begins,I hope I can watch it.But if I am busy studying then I will not watch it.Because study is always the first priority.I wish one day China can hold a World Cup,then our Chinese can watch the matches without going abroad.

echo lzf_optimized_for(), PHP_EOL;
// 1
// 如果LZF针对速度进行了优化,则返回1;对于压缩,则返回0。

LZF 全部就只提供了这三个非常简单的函数。lzf_compress() 用于对字符串进行压缩编码,可以看出我们输出的压缩之后的内容已经变成了乱码的形式。但是相对于 Bzip2 完全看不懂的编码内容来说,LZF 是可以看到原文的一部分内容的。lzf_decompress() 用于解码已经编码的字符串内容。lzf_optimized_for() 输出的是 LZF 扩展的编译后运行状态,如果返回的是 1 ,则表明针对当前系统的速度进行了优化,如果返回的是 0 ,表示的是仅仅是进行了压缩编码。

中文支持

$str = "如今我们站长做网站会越来越多的选择服务器,而不是虚拟主机。但是在选择服务器之后,我们大部分网友会直接使用宝塔面板、LNMP等一键安装WEB系统去配置网站环境。有些软件确实是在不断的升级和维护且安全功能做的不错,但是有些可能还没有考虑到安全问题。

因为大部分软件提供商都更多的考虑到功能,对于细节的安全做的还是不够的,比如前一段时间由于THINKPHP框架的漏洞导致安装THINKPHP的程序被黑,同时也影响到同一台服务器中的其他网站也有被黑掉,所以对于安全问题还是需要单独的处理";

$c = lzf_compress($str);
echo $c, PHP_EOL;
// 如今我们站长做网
//                 会越来 多的选择服务器,而不��虚拟主机。但 在�2之后 8�大部分 q有些软件� 5���@��� �升级和维护且 全功能A系统去配置 H �环境 �
//                                         �� ,错 ��ՀS可  还没考虑到�>问题 �

// 因为�逋提供商都更�^�C`| p
//                          对于细节 ��[��@y�� �够  比如前!!
// THINKPHP框架 .                                           段时间由 A
//               漏洞导致 U!J�"
//                              程序被黑 W同 也影响@��!��台�
// �aL��他�=��A`D掉 G所以�� s!d�%��
//                                 需要单独 �处理�

$v = lzf_decompress($c);
echo $v, PHP_EOL;
// 如今我们站长做网站会越来越多的选择服务器,而不是虚拟主机。但是在选择服务器之后,我们大部分网友会直接使用宝塔面板、LNMP等一键安装WEB系统去配置网站环境。有些软件确实是在不断的升级和维护且安全功能做的不错,但是有些可能还没有考虑到安全问题。

// 因为大部分软件提供商都更多的考虑到功能,对于细节的安全做的还是不够的,比如前一段时间由于THINKPHP框架的漏洞导致安装THINKPHP的程序被黑,同时也影响到同一台服务器中的其他网站也有被黑掉,所以对于安全问题还是需要单独的处理

当然,LZF 对中文也是良好支持的。同样的在编码后的内容中也是有部分内容是可见的。

总结

全部下来就只有这三个函数的一个压缩算法的扩展,是不是非常的简单方便。就像上面所说的,一是对于字符串的存储节约空间,二是可以做为某些传输的加密实现。当然,这个算法并不是完全的编码,所以我们还是能够看到原文的内容的。其实从这方面我们可以和 Bzip2 对比下,Bzip2 是二进制编码的,所以编码后的内容是完全乱码的。而 LZF 是非二进制的,采用一种熵算法的压缩算法,自然会有很多内容是肉眼可见的。最终,还是要取决于我们的业务形态来决定采用哪种具体的压缩扩展工具。

测试代码:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202006/source/PHP%E7%9A%84LZF%E5%8E%8B%E7%BC%A9%E6%89%A9%E5%B1%95%E5%B7%A5%E5%85%B7.php

参考文档:

https://www.php.net/manual/zh/book.lzf.php

https://www.cnblogs.com/pengze0902/p/5998843.html

(0)

相关推荐

  • 标梵学习PHP的压缩工具扩展包

    PHP的zip压缩工具扩展包学习 总算到了 PHP 的拿手好戏上场了,前面我们学习过 Bzip2 . LZF . Phar 和 rar 这些压缩相关扩展在 PHP 中的使用,不过它们要么是太冷门,要么 ...

  • PHP中命名空间是怎样的存在(一)?

    命名空间其实早在PHP5.3就已经出现了.不过大部分同学可能在各种框架的使用中才会接触到命名空间的内容,当然,现代化的开发也都离不开这些能够快速产出的框架.这次我们不从框架的角度,仅从简单的代码角度来 ...

  • 注意!PHP中字符串与数字的比较

    在日常开发过程中,运算符是我们每天都会接触到的.这个运算符中其实埋了非常多的坑,今天我们就来看下字符串和数字用比较需要注意的问题. 首先来看看这些代码: echo '"1234" ...

  • 彻底搞明白PHP中的include和require

    在PHP中,有两种包含外部文件的方式,分别是include和require.他们之间有什么不同呢? 如果文件不存在或发生了错误,require产生E_COMPILE_ERROR级别的错误,程序停止运行 ...

  • 在PHP中灵活使用foreach+list处理多维数组

    先抛出问题,有时候我们接收到的参数是多维数组,我们需要将他们转成普通的数组,比如: $arr = [ [1, 2, [3, 4]], [5, 6, [7, 8]],]; 我们需要的结果是元素1变成1, ...

  • final关键字在PHP中的使用

    final关键字的使用非常简单,在PHP中的最主要作用是定义不可重写的方法.什么叫不可重写的方法呢?就是子类继承后也不能重新再定义这个同名的方法. class A { final function t ...

  • [PHP小课堂]PHP的LZF压缩扩展工具

    [PHP小课堂]PHP的LZF压缩扩展工具 关注公众号:[硬核项目经理]获取最新文章 添加微信/QQ好友:[xiaoyuezigonggong/149844827]免费得PHP.项目管理学习资料 知乎 ...

  • PHP的bz2压缩扩展工具

    PHP的bz2压缩扩展工具 在日常的开发和电脑使用中,我们经常会接触到压缩和解压的一些工具,PHP 也为我们准备了很多相关的操作扩展包,都有直接可用的函数能够方便的操作一些压缩解压功能.今天,我们先学 ...

  • [PHP小课堂]PHP的bz2压缩扩展工具

    [PHP小课堂]PHP的bz2压缩扩展工具 关注公众号:[硬核项目经理]获取最新文章 添加微信/QQ好友:[xiaoyuezigonggong/149844827]免费得PHP.项目管理学习资料 知乎 ...

  • 编译kaldi扩展工具irstlm

    版本:Fedora release 25 (Twenty Five) gcc version 6.3.1 20161221 (Red Hat 6.3.1-1) (GCC) 为什么单独拿出来这个说呢? ...

  • 「Zim」- 常用插件及扩展工具

    在 Zim 中,支持众多插件以扩展功能,使其更加强大.比如,时序图.代码块.截图.拼写检查等等. 该笔记将记录:部分插件使用方法及配置方法. 有哪些可以使用的插件? 与 Zim 共同打包发布的插件 1 ...

  • iSparta官方版(图片压缩转换工具) v3.1 免费版

    免费实用的png格式图片压缩转换工具,iSparta官方版该软件可以帮你压缩png格式图片大小,还能够进行图片格式的转换,超多转换功能,可以提供png等图片格式的图片压缩png等格式向apng,web ...

  • ORICO电小方插座,安全实用的插座扩展工具

    前些天入手了一款ORICO奥睿科的电小方排插,最近用了几次感觉很方便,目前ORICO的插座都采用了新国标规范,用起来很安全,这款电小方本身能支持2500W的功能,应对日常的各种电器绰绰有余. 电小方这 ...

  • 【PS插件】风光调色修图亮度蒙版插件扩展工具TKActions V8最新完整汉化版TK8+中文视频使用教程

    更新到TK8 兼容系统:win/mac 支持软件:PS 2021以上版本 插件语言:中英文可选(可以设置6种语言) 下载: 关注公众号:两只山羊后期加油站 或者进[PS插件]风光调色修图亮度蒙版插件扩 ...

  • Adobe超强扩展工具系列,这里每一款都是网红爆款!

    Adobe超强扩展工具系列,这里每一款都是网红爆款!