首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 使用 gzcompress/gzuncompress 壓縮與解壓縮字串

     編輯:PHP 相關知識

前言

PHP 內建 gzcompress() 與 gzuncompress() 基於 zlib 演算法,可快速壓縮/解壓字串,適用於快取儲存、網路傳輸減少頻寬、資料庫欄位壓縮等場景。本文示範基本用法與壓縮等級設定。

基本壓縮與解壓範例

<?php
$str = 'Hello I am a very very very very long string';

// 壓縮等級 0-9(9 最高壓縮比,最耗 CPU)
$compressed   = gzcompress($str, 9);
$uncompressed = gzuncompress($compressed);

echo "原始長度: " . strlen($str) . " 位元組\n";
echo "壓縮長度: " . strlen($compressed) . " 位元組\n";
echo "解壓結果: $uncompressed\n";
echo "是否相同: " . ($str === $uncompressed ? '是' : '否') . "\n";
?>

壓縮資料的編碼輸出(便於儲存/傳輸)

<?php
// 二進位壓縮資料常需編碼為可列印字串
echo "Base64: " . base64_encode($compressed) . "\n";
echo "Hex:    " . bin2hex($compressed) . "\n";
echo "URL Enc:" . urlencode($compressed) . "\n";
?>

壓縮等級選擇指南

等級壓縮比CPU 耗用適用場景
0無壓縮最低測試/偵錯
1最快低即時壓縮、高頻寫入
6 (預設)平衡中通用場景
9最高高靜態資源、一次寫入多次讀取

進階:搭配 gzencode/gzdecode(含 gzip 標頭)

<?php
// gzencode 產生符合 RFC 1952 的 gzip 格式(含標頭、CRC32)
$gzipped = gzencode($str, 9);
// 可直接輸出給瀏覽器(需送出 Content-Encoding: gzip 標頭)
// header('Content-Encoding: gzip');
// echo $gzipped;

$original = gzdecode($gzipped);
?>

gzcompress 產生 ZLIB 格式(RFC 1950),gzencode 產生 GZIP 格式(RFC 1952),兩者不相容,請根據用途選擇。

總結

gzcompress()/gzuncompress() 提供簡單高效的字串壓縮方案,適當選擇壓縮等級可在體積與效能間取得平衡。希望本文對您的 PHP 程式設計有所幫助。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved