curl 経由で gzip 圧縮された Web ページを取得していますが、取得したコンテンツをブラウザーに出力すると、生の gzip 圧縮データだけが取得されます。PHP でデータをデコードするにはどうすればよいですか?
私が見つけた方法の 1 つは、コンテンツを tmp ファイルに書き込んでから...
$f = gzopen($filename,"r");
$content = gzread($filename,250000);
gzclose($f);
....でも、もっといい方法があるはずだよ。
編集: これはファイルではなく、Web サーバーから返された gzip 圧縮された HTML ページです。
ベストアンサー1
次のコマンドは、cURL の「自動エンコード」モードを有効にします。このモードでは、サーバーがサポートするエンコード方式が (ヘッダー経由で) サーバーに通知されAccept-Encoding
、応答が自動的に解凍されます。
// Allow cURL to use gzip compression, or any other supported encoding
// A blank string activates 'auto' mode
curl_setopt($ch, CURLOPT_ENCODING , '');
ヘッダーを強制的に変更したい場合は、Accept-Encoding: gzip
代わりに次のコマンドを使用できます。
// Allow cURL to use gzip compression, or any other supported encoding
curl_setopt($ch, CURLOPT_ENCODING , 'gzip');
詳しくはこちらPHP ドキュメント: curl_setopt。
この回答の改善にご協力いただいたコメント投稿者の皆様に感謝します。