PHP で cURL 経由で取得した gzip 圧縮された Web ページをデコードする 質問する

PHP で cURL 経由で取得した gzip 圧縮された Web ページをデコードする 質問する

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

この回答の改善にご協力いただいたコメント投稿者の皆様に感謝します。

おすすめ記事