php 如何解压 http gzip Content-Encoding: gzip远程获取到内容乱码 如何解压?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 解压函数string gzdecode ( string $data [, int $length ] );压缩函数是gzencode Call to undefined function gzdecode()这个是自定义 还是另外要开的 要加载zlib模块,具体看看php的手册说明。 zlib.output_compression = on;zlib.output_compression_level = -1本机php.ini里头有这个zlib.output_compression = on开启后 我本机测试程序也可以以gzip压缩后输出不知道这样是否已经加载了zlib模块问题是还不懂如何解压 具体如何配置??? 可以压缩不是说明我的环境可以支持解压么在PHP手册里头找到一个gzdecode自定义函数调用解压输入内容为空白 我已经去掉了HTTP头 还是一样 解压的话,应该是gzuncompress。但我这里测试,直接读到gzip压缩的内容就可以用,不会乱码。 $str="";$fp = fsockopen("ask.39.net", 80, $errno, $errstr, 30); if (!$fp) { echo "$errstr ($errno)<br />\n";} else { $out = "GET /question/10819414.html HTTP/1.1\r\n"; $out .= "Accept: application/x-shockwave-flash, image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*/\r\n"; $out.="Accept-Language: zh-cn\r\n"; $out.="Accept-Encoding: gzip,deflate\r\n"; $out.="User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\n"; $out .= "Host: ask.39.net\r\n"; // $out.="Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7\r\n"; //$out.="Keep-Alive: 300\r\n";$out.="Connection: keep-alive\r\n"; $out .= "Cookie: onlineId=5347153279694344113; ip_to_city=%BD%AD%CE%F7%CA%A1%B8%D3%D6%DD%CA%D0+%B5%E7%D0%C5; __utma=56571124.2013124916.1279761358.1279761358.1279761358.1; __utmb=56571124.3.10.1279761358; __utmz=56571124.1279761358.1.1.utmcsr=baidu|utmccn=(organic)|utmcmd=organic|utmctr=39; online_bbs=4799118517545223018; laston_bbs=634153871235869750; Hm_lvt_e517564e98c2825803fdf00b6c0d9ee7=1279761404390; Hm_lvt_1827105cf5cfac624c8dbf5159abfdb4=1279761721875\r\n\r\n"; $out.="Cache-Control: max-age=0\r\n"; fwrite($fp, $out); while (!feof($fp)) { $str.=fgets($fp, 128); //echo $str; } fclose($fp);}echo $str;我要处理的就是这个内容 下面是处理HTTP头 及一些没用的错误反馈function cut($file,$from,$end,$num=1){ $message=explode($from,$file); $message=explode($end,$message[$num]);return $message[0];}$str=cut($str,"X-UA-Compatible: IE=EmulateIE7","HTTP/1.1 400 Bad Request");echo $str;用gzuncompress给出的是数据错误 上面去HTTP头有错误 用这个是完全取GZIP 可能有错误 总之无法解压function cut($file,$from,$end,$num=1){ $message=explode($from,$file); $message=explode($end,$message[$num]);return $message[0];}$str=cut($str,"Transfer-Encoding: chunked","HTTP/1.1 400 Bad Request");echo $str; 学艺不精,确实不好解压。但是可以绕着走!记得我上次说过,发送的头中$out.="Accept-Encoding: gzip,deflate\r\n";是可以接受 gzip 压缩数据,但有解压的麻烦其实你只要去掉 gzip$out.="Accept-Encoding: deflate\r\n";就可以得到明文了 这点下午GOOGLE的时候 也发现了 的确解决了所有问题 但是网上还有种情况服务器 无视HTTP头发送的信息 想解决这个解压问题 以后遇上了 就不用烦恼 今天早上7点测试时发现 服务器无视我的请求 Accept-Encoding: deflate这样没任何信息给我 昨天下午测试有明文 使用gzip后可以得到压缩后的数据 貌似服务器有设置 请求的时候, 把 Accept-Encoding 整个去掉... 没用的 只有接受GZIP 才有数据反馈给我 只有解压GZIP 伪造来路还是?访问的URL 我在上面的代码已经提供了 这几天GOOGLE了几个函数 都失败告终 无法正确的解压出来 C++语言区看到人家成功解压了 不懂怎么应用到PHP来 http://topic.csdn.net/u/20081106/21/5c5020c1-e9e5-4c32-a3d1-000cc7089754.html http://blog.csdn.net/sxldfang/archive/2010/04/12/5478078.aspx http://blog.csdn.net/wfqxx/archive/2009/07/16/4353801.aspx PHP Session丢失 一个代码优化比较 PHP连接mssql数据库问题(非常着急)进来就有分。解决再送200分 大哥帮帮忙!!!!如何从表单中获取数据并查询 用JS escape编码的汉字如何解码? 关于自定义函数的小问题 sql 问题 探索加快php+mysql执行速度的方法。请问大家都知道什么好的方法 紧急问题!!!(答着给分!) 请教关于mysql返回数组的几个问题 问个服务器关于process和流量关系的问题 实在另我费解的MYSQL外键
string gzdecode ( string $data [, int $length ] );
压缩函数是gzencode
这个是自定义 还是另外要开的
;zlib.output_compression_level = -1
本机php.ini里头有这个zlib.output_compression = on开启后 我本机测试程序也可以以gzip压缩后输出
不知道这样是否已经加载了zlib模块问题是还不懂如何解压 具体如何配置???
但我这里测试,直接读到gzip压缩的内容就可以用,不会乱码。
$str="";
$fp = fsockopen("ask.39.net", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET /question/10819414.html HTTP/1.1\r\n";
$out .= "Accept: application/x-shockwave-flash, image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*/\r\n";
$out.="Accept-Language: zh-cn\r\n";
$out.="Accept-Encoding: gzip,deflate\r\n";
$out.="User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\n";
$out .= "Host: ask.39.net\r\n";
// $out.="Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7\r\n";
//$out.="Keep-Alive: 300\r\n";
$out.="Connection: keep-alive\r\n";
$out .= "Cookie: onlineId=5347153279694344113; ip_to_city=%BD%AD%CE%F7%CA%A1%B8%D3%D6%DD%CA%D0+%B5%E7%D0%C5; __utma=56571124.2013124916.1279761358.1279761358.1279761358.1; __utmb=56571124.3.10.1279761358; __utmz=56571124.1279761358.1.1.utmcsr=baidu|utmccn=(organic)|utmcmd=organic|utmctr=39; online_bbs=4799118517545223018; laston_bbs=634153871235869750; Hm_lvt_e517564e98c2825803fdf00b6c0d9ee7=1279761404390; Hm_lvt_1827105cf5cfac624c8dbf5159abfdb4=1279761721875\r\n\r\n";
$out.="Cache-Control: max-age=0\r\n"; fwrite($fp, $out); while (!feof($fp)) {
$str.=fgets($fp, 128);
//echo $str;
}
fclose($fp);
}echo $str;我要处理的就是这个内容 下面是处理HTTP头 及一些没用的错误反馈function cut($file,$from,$end,$num=1){ $message=explode($from,$file);
$message=explode($end,$message[$num]);
return $message[0];
}
$str=cut($str,"X-UA-Compatible: IE=EmulateIE7","HTTP/1.1 400 Bad Request");
echo $str;
用gzuncompress给出的是数据错误
$message=explode($end,$message[$num]);
return $message[0];
}
$str=cut($str,"Transfer-Encoding: chunked","HTTP/1.1 400 Bad Request");
echo $str;
但是可以绕着走!
记得我上次说过,发送的头中
$out.="Accept-Encoding: gzip,deflate\r\n";
是可以接受 gzip 压缩数据,但有解压的麻烦
其实你只要去掉 gzip
$out.="Accept-Encoding: deflate\r\n";
就可以得到明文了
今天早上7点测试时发现 服务器无视我的请求 Accept-Encoding: deflate这样没任何信息给我 昨天下午测试有明文 使用gzip后可以得到压缩后的数据 貌似服务器有设置
访问的URL 我在上面的代码已经提供了
这几天GOOGLE了几个函数 都失败告终 无法正确的解压出来
C++语言区看到人家成功解压了 不懂怎么应用到PHP来