首页 » PHP教程 » php紧缩字符串技巧_PHP的LZF压缩扩展对象

php紧缩字符串技巧_PHP的LZF压缩扩展对象

访客 2024-10-29 0

扫一扫用手机浏览

文章目录 [+]

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

基本函数利用

$str="The2014WorldCupwillbeholdin.Itisagrandoccasionforallthefootballfansallovertheworld.MyfavoriteteamistheSpainishTeam.AndmyfavoritefootballstarisDidierYvesDrogbaTébily.IhopetheChineseTeeamcandowellintheWorldCup.BecauseChinahasneverwonaWorldCupbefore.ThisyearIhopethesituationwillchange.Whenthematchbegins,IhopeIcanwatchit.ButifIambusystudyingthennIwillnotwatchit.Becausestudyisalwaysthefirstpriority.IwishonedayChinacanholdaWorldCup,thenourChinesecanwatchthematcheswithouutgoingabroad.Maybeonedaymydreamcancometrue.";$c=lzf_compress($str);echo$c,PHP_EOL;//The2014WorldCupwillbehoin.ItisagrandoccasionforatBfootb@//fanover`w@X.My//voriteteam@Q@8SpainishT.A_m�)�Vstar@2DidiWYvesDrogbaTébily.I�p\�Chchange.candowe��@��.Becau)@1ahasne@�w�a�'!�e.Thye��msituatAa9//When`omatchCgins,�;I`�w`it.Bu!ff!busy�udying@Bn`]not�2��s@)Aalways@0firstpriAsAwAeoneday��Aa����!"nour`%AG@'����!witho�go@�abroad@�May"=�i!�dr!�`Dcom!�rue.$v=lzf_decompress($c);echo$v,PHP_EOL;//The2014WorldCupwillbeholdin.Itisagrandoccasionforallthefootballfansallovertheworld.MyfavoriteteamistheSpainishTeam.AndmyfavoritefootballstarisDidierYvesDrogbaTébily.IhopetheChineseTeamcandowellintheWorldCup.BecauseChinahasneverwonaWorldCupbefore.ThisyearIhopethesituationwillchange.//Whenthematchbegins,IhopeIcanwatchit.ButifIambusystudyingthenIwillnotwatchit.Becausestudyisalwaysthefirstpriority.IwishonedayChinacanholdaWorldCup,thenourChinesecanwatchthematcheswithoutgoingabroad.echolzf_optimized_for(),PHP_EOL;//1//如果LZF针对速率进行了优化,则返回1;对付压缩,则返回0。

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

php紧缩字符串技巧_PHP的LZF压缩扩展对象

中文支持

$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 对中文也是良好支持的。
同样的在编码后的内容中也是有部分内容是可见的。

php紧缩字符串技巧_PHP的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

标签:

相关文章