博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php对gzip文件或者字符串解压实例参考
阅读量:7066 次
发布时间:2019-06-28

本文共 1219 字,大约阅读时间需要 4 分钟。

要采集一个网站,目标站采用了gzip压缩传输网页,本来应该只要发送一个http头 Accept-Encoding: identity或者干脆不发送这个头等,就可以使目标站返回没有经过gzip压缩的页面了,不过很不幸,目标站无视客户端的请求,仍然返回gzip数据,造成乱码。      其实php对gzip解压很简单,用内置的gzdecode函数就可以了,不过很可惜我配置了半天也无法支持gzdecode函数,所以只好变通一下:  复制代码 代码如下:if (!function_exists('gzdecode')) {          function gzdecode ($data) {              $flags = ord(substr($data, 3, 1));              $headerlen = 10;              $extralen = 0;              $filenamelen = 0;              if ($flags & 4) {                  $extralen = unpack('v' ,substr($data, 10, 2));                  $extralen = $extralen[1];                  $headerlen += 2 + $extralen;              }              if ($flags & 8) // Filename                  $headerlen = strpos($data, chr(0), $headerlen) + 1;              if ($flags & 16) // Comment                  $headerlen = strpos($data, chr(0), $headerlen) + 1;              if ($flags & 2) // CRC at end of file                  $headerlen += 2;              $unpacked = @gzinflate(substr($data, $headerlen));              if ($unpacked === FALSE)                    $unpacked = $data;              return $unpacked;           }      } 调用方法很简单:  复制代码 代码如下:$f=@file_get_contents("http://www.jb51.net");       echo gzdecode($f);

 

转载地址:http://evxll.baihongyu.com/

你可能感兴趣的文章
决战燕京城-10 前往天寿山
查看>>
WebMvcTest与SpringBootTest
查看>>
面试官:你接受免费加班吗?程序员这样怼回去,网友:老铁没毛病
查看>>
分享我的个人项目:Wildfire 野火评论系统
查看>>
【机器视觉与图像处理】基于MATLAB的角度计算
查看>>
一篇很全面的IOS面试题(下)
查看>>
极简.高性能.分布式框架,可运行于多种环境(apache/php-fpm,swoole)
查看>>
DESTOON7.0农产品B2B供应求购交易平台源码
查看>>
node js 批量处理pdf,提取关键信息,并导出excel
查看>>
05 Objective C数组的四种遍历方法总结
查看>>
少侠请重新来过 - Vue学习笔记(五) - 指令
查看>>
重学前端(六)-JavaScript中的class
查看>>
技术并非一切,做做 Side Project 吧
查看>>
ViewPager+seekBar的联动效果
查看>>
RPA:制造业的下一个改变者
查看>>
VSCode Python开发环境配置
查看>>
208道 java 高频面试题和答案
查看>>
nginx反向代理配置
查看>>
MySQL学习笔记 初学基础篇
查看>>
一步步教你用 CSS 为 SVG 添加过滤器
查看>>