فك المضغوطة صفحة ويب استردادها عن طريق حليقة في PHP
سؤال
أنا استرداد المضغوطة صفحة ويب عبر حليقة, ولكن عندما خرج استرجاع محتوى المتصفح أنا مجرد الحصول على الخام المضغوطة البيانات.كيف يمكن فك تشفير البيانات في 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;
لا تنتمي إلى StackOverflow