<?php /** * Распаковка страницы в gzip * автор: Nc_Soft * 29.05.09 * */ //получаем страницу, где поддерживается сжатие $ch=curl_init('http://snippets.pp.ru/'); //настраиваем, чтобы сеанс выводился не в браузер, а в переменную curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //заголовки тут ни к чему //curl_setopt($ch, CURLOPT_HEADER, 1); //задаем заголовок для сжатия Accept-Encoding: gzip, deflate //и еще несколько заголовков за компанию (необязательно) curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Accept-Encoding: gzip, deflate', 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language: ru,en-us;q=0.7,en;q=0.3', 'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7', )); //выполняем запрос $res = curl_exec($ch); //закрываем сеанс cURL curl_close($ch); //в переменной $res у нас сжатые данные в "кракозябрах", проверка echo $res; //разделитель для читабельности echo "<br /><br />\n\n"; /*самое важное: чтобы раскодировать данные надо применить функцию gzinflate, обрезав при этом первые 10 байт!*/ echo gzinflate(substr($res, 10)); /* Результат можно увидеть запустив snippet. Что нам это дает? С серверов, где поддерживается сжатие можно тащить примерно в 10 раз меньше данных, чем раньше, тоесть грабберы будут работать шустрее. Ну и конечно, snippets не появляются из ниоткуда, каждый snippet решает проблему из "жизни", пример: echo file_get_contents('http://radiorecord.ru/charts/'); Почему-то хоть убей выдается не вся страница, а примерно половина. Запрос с использованием заголовка Accept-Encoding: gzip, deflate позволяет получить страницу целиком, хоть и в сжатом виде. */