関数の概要
gzdecode は、PHPでgzip形式で圧縮されたデータを解凍するための関数です。圧縮された文字列やバイナリデータを元の非圧縮状態に戻すことができ、特にHTTPレスポンスのボディデータなどgzip圧縮された内容を扱う際に便利です。
パラメータの説明
data(必須): gzip圧縮された文字列データを指定します。length(省略可能): 解凍する最大バイト数を指定します。省略するとすべて解凍されます。
戻り値
解凍に成功した場合は元の非圧縮データ(文字列)が返されます。失敗した場合は FALSE が返されます。
使用例
基本的な使い方
<?php
$compressed = gzencode("これはテストデータです");
$decompressed = gzdecode($compressed);
echo $decompressed; // 出力: これはテストデータです
?>
この例では、gzencode で作成したgzip圧縮データを gzdecode で解凍しています。
ファイルから読み込んだgzipデータを解凍する例
<?php
$compressedData = file_get_contents('sample.gz');
$originalData = gzdecode($compressedData);
if ($originalData === false) {
echo "解凍に失敗しました。";
} else {
echo $originalData;
}
?>
gzip形式で保存されたファイルを読み込み、gzdecode で解凍しています。解凍に失敗した場合はエラーメッセージを表示しています。
HTTPレスポンスのgzipボディを解凍する例
<?php
$url = "https://example.com/api/data";
$options = [
"http" => [
"header" => "Accept-Encoding: gzip"
]
];
$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);
$body = gzdecode($response);
if ($body === false) {
echo "データの解凍に失敗しました。";
} else {
echo $body;
}
?>
HTTPリクエストでgzip圧縮を要求して、受け取った圧縮データを gzdecode で解凍しています。
関連する関数
gzencode: データをgzip形式で圧縮する関数gzcompress: zlib形式で圧縮する関数(gzipとは異なる)gzuncompress:gzcompressで圧縮されたデータを解凍する関数gzopen,gzread,gzwrite: gzip圧縮ファイルの読み書きを行う関数群
まとめ
gzdecode はPHPでgzip圧縮された文字列データを簡単に解凍できる便利な関数です。ファイルやHTTPレスポンスなどでgzip圧縮されたデータを取り扱う場合に幅広く利用でき、関連する圧縮・解凍関数と組み合わせることで柔軟なデータ処理が可能です。データの圧縮形式に注意しつつ、エラー処理も適切に行うことで、実務での活用がスムーズになるでしょう。
