Декодирование gzipped веб-страницы, полученной через cURL в PHP

Я извлекаю gzipped веб-страницу через curl, но когда я выводя полученный контент в браузер, я просто получаю необработанные gzipped данные. Как я могу декодировать данные в PHP?

Один из методов, который я нашел, – это записать содержимое в файл tmp, а затем …

$f = gzopen($filename,"r"); $content = gzread($filename,250000); gzclose($f); 

…. но человек, должен быть лучший способ.

Изменить: это не файл, а gzipped html-страница, возвращаемая веб-сервером.

Я использую завиток и:

 curl_setopt($ch,CURLOPT_ENCODING , "gzip"); 

В комментариях на странице PHP для gzdecode предлагается несколько решений.

Универсальная функция GUNZIP:

    функция gunzip ($ zipped) {
       $ offset = 0;
       if (substr ($ zipped, 0,2) == "\ x1f \ x8b")
          $ offset = 2;
       if (substr ($ zipped, $ offset, 1) == "\ x08") {
          # file_put_contents ("tmp.gz", substr ($ zipped, $ offset - 2));
          return gzinflate (substr ($ zipped, $ offset + 8));
       }
       return «Неизвестный формат»;
    }  

Пример интегрирующей функции с CURL:

       $ headers_enabled = 1;
       curl_setopt ($ c, CURLOPT_HEADER, $ headers_enabled)
       $ ret = curl_exec ($ c);

       if ($ headers_enabled) {
          # file_put_contents ("preungzip.html", $ ret);

          $ sections = explode ("\ x0d \ x0a \ x0d \ x0a", $ ret, 2);
          while (! strncmp ($ sections [1], 'HTTP /', 5)) {
             $ sections = explode ("\ x0d \ x0a \ x0d \ x0a", $ sections [1], 2);
          }
          $ headers = $ sections [0];
          $ data = $ sections [1];

          if (preg_match ('/ ^ Content-Encoding: gzip / mi', $ headers)) {
             printf ("gzip header found \ n");
             return gunzip ($ data);
          }
       }

       return $ ret;