php对gzip文件或者字符串解压实例参考

 更新时间:2008年07月25日 23:13:06   作者:  
要采集一个网站,目标站采用了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("https://www.jb51.net");      
echo gzdecode($f);     

相关文章

  • 细谈php中SQL注入攻击与XSS攻击

    细谈php中SQL注入攻击与XSS攻击

    通常在编程中程序员要考虑的问题不仅是代码效率与代码复用性,而且还要考虑一些安全问题
    2012-06-06
  • 解析php中die(),exit(),return的区别

    解析php中die(),exit(),return的区别

    本篇文章是对php中die(),exit(),return的区别进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • PHP页面静态化的优缺点与实现

    PHP页面静态化的优缺点与实现

    众所周知,页面静态化是门户网站研发中必备的一项技能,本课程从纯静态化和伪静态化两个角度进行分析,带领大家掌握在PHP中如何生成纯静态化页面,在WEB服务器中如何配置伪静态,帮助大家掌握又一项加薪利器
    2023-02-02
  • php抽象方法和普通方法的区别点总结

    php抽象方法和普通方法的区别点总结

    在本篇文章里小编给大家分享的是关于php 抽象方法和普通方法的区别的相关文章,有需要的朋友们可以学习下。
    2019-10-10
  • php实现简单的MVC框架实例

    php实现简单的MVC框架实例

    这篇文章主要介绍了php实现简单的MVC框架,较为详细的分析了php实现MVC框架的相关实现技巧与注意事项,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09
  • php 微信开发获取用户信息如何实现

    php 微信开发获取用户信息如何实现

    这篇文章主要介绍了php 微信开发获取用户信息如何实现的相关资料,需要的朋友可以参考下
    2016-12-12
  • PHP使用debug_backtrace方法跟踪调试代码调用详解

    PHP使用debug_backtrace方法跟踪调试代码调用详解

    这篇文章主要介绍了PHP使用debug_backtrace方法跟踪调试代码调用,结合实例形式详细分析了debug_backtrace函数的功能、参数、使用方法及相关操作注意事项,需要的朋友可以参考下
    2018-07-07
  • 浅析php学习的路线图

    浅析php学习的路线图

    一直都想走上码农的道路,奈何当年没有学好。一直与码农无缘。现在又想做一些码农就下了一套某个培训机构的php视频来看。希望能走上码农的道路
    2013-07-07
  • 浅谈php扩展imagick

    浅谈php扩展imagick

    imagick是一个可以供PHP调用ImageMagick功能的PHP扩展。使用这个扩展可以使PHP具备和ImageMagick相同的功能。
    2014-06-06
  • PHP文件读写操作之文件写入代码

    PHP文件读写操作之文件写入代码

    今天和大家分享如何利用PHP技术实现文件读写之文件写入操作教程,也算是对PHP文件读写操作的入门学习。
    2011-01-01

最新评论