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

2015-01-24信息快讯网

本篇文章是对使用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判断是否为json格式的方法
PHP根据IP判断地区名信息的示例代码
PHP 字符串长度判断效率更高的方法
php判断字符串在另一个字符串位置的方法
php判断ip黑名单程序代码实例
php获取网页标题和内容函数(不包含html标签)
php使用curl检测网页是否被百度收录的示例分享
网页上facebook分享功能具体实现
php 字符串压缩方法比较示例
使用phpQuery采集网页的方法
php file_get_contents抓取Gzip网页乱码的三种解决方法
php ZipArchive压缩函数详解实例
php检测网页是否被百度收录的函数代码
使用php判断服务器是否支持Gzip压缩功能
PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
解析PHP中的file_get_contents获取远程页面乱码的问题
解析如何通过PHP函数获取当前运行的环境 来进行判断执行逻辑(小技巧)
如何使用php判断所处服务器操作系统的类型
基于empty函数的判断详解
判断php数组是否为索引数组的实现方法
php启用zlib压缩文件的配置方法
控制PHP的输出:缓存并压缩动态页面
如何判断php数组的维度
php生成zip压缩文件的方法详解
探讨如何在PHP开启gzip页面压缩实例
php gzip压缩输出的实现方法
ajax完美实现两个网页 分页功能的实例代码
php简单开启gzip压缩方法(zlib.output_compression)
file_get_contents获取不到网页内容的解决方法
phpexcel导出excel的颜色和网页中的颜色显示不一致
php在程序中将网页生成word文档并提供下载的代码
©2014-2024 dbsqp.com