PHP的LZF壓縮擴充套件工具

lee_lgw發表於2021-09-09

這次為大家帶來的是另外一個 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 `]not2s@)Aalways@0	 first priAsAwAeone dayAa !"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 beginsI 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 Cupthen 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 是非二進位制的採用一種熵演算法的壓縮演算法自然會有很多內容是肉眼可見的。最終還是要取決於我們的業務形態來決定採用哪種具體的壓縮擴充套件工具。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1020/viewspace-2797672/,如需轉載,請註明出處,否則將追究法律責任。

相關文章