共计 3360 个字符,预计需要花费 9 分钟才能阅读完成。
这次为大家带来的是另外一个 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
各自媒体平台均可搜寻【硬核项目经理】