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

 更新时间:2013年06月25日 16:24:02   作者:  
本篇文章是对使用php判断网页是否gzip压缩进行了详细的分析介绍,需要的朋友参考下
昨天晚上群里有朋友采集网页时发现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;

相关文章

  • PHP查询附近的人及其距离的实现方法

    PHP查询附近的人及其距离的实现方法

    这篇文章主要介绍了PHP查询附近的人及其距离的实现方法,涉及php数学运算的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-05-05
  • php编写的抽奖程序中奖概率算法

    php编写的抽奖程序中奖概率算法

    本文给大家分享的是php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法。用法很简单,代码里有详细注释说明,一看就懂,有需要的小伙伴参考下吧。
    2015-05-05
  • CodeIgniter图像处理类的深入解析

    CodeIgniter图像处理类的深入解析

    本篇文章是对CodeIgniter的图像处理类进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • php bootstrap实现简单登录

    php bootstrap实现简单登录

    这篇文章主要为大家详细介绍了php bootstrap实现简单登录的具体方法,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • 编译php 5.2.14+fpm+memcached(具体操作详解)

    编译php 5.2.14+fpm+memcached(具体操作详解)

    本篇文章是对编译php5.2.14+fpm+memcached的具体操作进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • 浅谈Swoole并发编程的魅力

    浅谈Swoole并发编程的魅力

    PHP语言是一个短生命周期的Web编程语言,很多PHPer已经形成了fpm下编程的思维定势。实际上在Swoole出现之后,这种串行化编程的模式早已被打破。使用Swoole完全可以轻易实现更灵活的并发编程。
    2021-05-05
  • php通过array_merge()函数合并关联和非关联数组的方法

    php通过array_merge()函数合并关联和非关联数组的方法

    这篇文章主要介绍了php通过array_merge()函数合并关联和非关联数组的方法,涉及php中array_merge()函数操作数组合并的技巧,需要的朋友可以参考下
    2015-03-03
  • PHP记录搜索引擎蜘蛛访问网站足迹的方法

    PHP记录搜索引擎蜘蛛访问网站足迹的方法

    这篇文章主要介绍了PHP记录搜索引擎蜘蛛访问网站足迹的方法,实例分析了针对php记录搜索引擎蜘蛛访问足迹的技巧,涉及数据库的创建及php记录各类常见搜索引擎访问的方法,需要的朋友可以参考下
    2015-04-04
  • 如何利用PHP实现上传图片功能详解

    如何利用PHP实现上传图片功能详解

    这篇文章主要给大家介绍了关于如何利用PHP实现上传图片功能的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • php中的抽象方法和抽象类

    php中的抽象方法和抽象类

    本文主要介绍了php中的抽象方法和抽象类。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02

最新评论