فك المضغوطة صفحة ويب استردادها عن طريق حليقة في PHP

StackOverflow https://stackoverflow.com/questions/310650

  •  10-07-2019
  •  | 
  •  

سؤال

أنا استرداد المضغوطة صفحة ويب عبر حليقة, ولكن عندما خرج استرجاع محتوى المتصفح أنا مجرد الحصول على الخام المضغوطة البيانات.كيف يمكن فك تشفير البيانات في PHP?

أسلوب واحد وجدت لكتابة محتوى الملف tmp ثم ...

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

....ولكن الرجل يجب أن يكون هناك طريقة أفضل.

تحرير:هذا ليس ملف ، ولكن المضغوطة صفحة html إرجاعها من قبل ملقم ويب.

هل كانت مفيدة؟

المحلول

وأنا استخدم حليقة و:

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

نصائح أخرى

هناك العديد من الحلول المقترحة في التعليقات على PHP صفحة gzdecode.

وظيفة متعددة الاستخدامات غونزيب:

   function 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 "Unknown Format";
   }  

مثال لدمج وظيفة مع الضفيرة:

      $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;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top