• 技术文章 >后端开发 >php教程

    使用php判断网页是否gzip压缩_php技巧

    2016-05-17 08:58:50原创360
    昨天晚上群里有朋友采集网页时发现file_get_contents 获得的网页保存到本地为乱码,响应的header 里 Content-Encoding:gzip
    但在浏览器里看是正常的。
    因为我有过相关经验马上发现是网站开启了gzip而file_get_contents 获得的是压缩过的页面,而不是解压过的页面(不知道是不是要file_get_conttents 请求网页时带上相应的参数,直接获得没有被gzip压缩过的网页?)
    刚好我前不久刚看到可以用读取文件的前2个字节判断文件类型。群里面的朋友也说gzip压缩过的网页(gbk编码)前2字节是 1F 8B 于是就可以判断网页是否gzip压缩过。
    代码如下:
    复制代码 代码如下:

    //米尔军事网采用 gzip压缩网页
    //file_get_contents 直接获得的网页是乱码。
    header('Content-Type:text/html;charset=utf-8' );
    $url = 'http://www.miercn.com';
    $file = fopen($url, "rb");
    //只读2字节 如果为(16进制)1f 8b (10进制)31 139则开启了gzip ;
    $bin = fread($file, 2);
    fclose($file);
    $strInfo = @unpack("C2chars", $bin);
    $typeCode = intval($strInfo['chars1'].$strInfo['chars2']);
    $isGzip = 0;
    switch ($typeCode)
    {
    case 31139:
    //网站开启了gzip
    $isGzip = 1;
    break;
    default:
    $isGzip = 0;
    }
    $url = $isGzip ? "compress.zlib://".$url:$url; // 三元表达式
    $mierHtml = file_get_contents($url); //获得米尔军事网数据
    $mierHtml = iconv("gbk","utf-8",$mierHtml);
    echo $mierHtml;
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php gzip 压缩
    上一篇:解析Extjs与php数据交互(增删查改)_php技巧 下一篇:深入extjs与php参数交互的详解_php技巧
    php培训_php实战培训【立即报名】-php中文网第20期

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 分享一个有趣的php版本的扫雷!• 一个ubbcode的函数,速度很快._PHP教程• 用Php实现链结人气统计_PHP教程• 一个查看session内容的函数_PHP教程• 第1次亲密接触PHP5(2)_PHP教程
    1/1

    PHP中文网