熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PHP編程 >> 正文

使用php判斷網頁是否gzip壓縮

2013-11-15 12:37:12  來源: PHP編程 

  昨天晚上群裡有朋友采集網頁時發現file_get_contents 獲得的網頁保存到本地為亂碼響應的header 裡 ContentEncoding:gzip
但在浏覽器裡看是正常的
因為我有過相關經驗馬上發現是網站開啟了gzip而file_get_contents 獲得的是壓縮過的頁面而不是解壓過的頁面(不知道是不是要file_get_conttents 請求網頁時帶上相應的參數直接獲得沒有被gzip壓縮過的網頁?)
剛好我前不久剛看到可以用讀取文件的前個字節判斷文件類型群裡面的朋友也說gzip壓縮過的網頁(gbk編碼)前字節是 F B 於是就可以判斷網頁是否gzip壓縮過
代碼如下

復制代碼 代碼如下:

  
//米爾軍事網采用 gzip壓縮網頁
//file_get_contents 直接獲得的網頁是亂碼
header(ContentType:text/html;charset=utf );
$url = ;
$file = fopen($url "rb");
//只讀字節 如果為(進制)f b (進制) 則開啟了gzip ;
$bin = fread($file );
fclose($file);
$strInfo = @unpack("Cchars" $bin);
$typeCode = intval($strInfo[chars]$strInfo[chars]);
$isGzip = ;
switch ($typeCode)
{
case :
//網站開啟了gzip
$isGzip = ;
break;
default:
$isGzip = ;
}
$url = $isGzip ? "compresszlib://"$url:$url; // 三元表達式
$mierHtml = file_get_contents($url); //獲得米爾軍事網數據
$mierHtml = iconv("gbk""utf"$mierHtml);
echo $mierHtml;


From:http://tw.wingwit.com/Article/program/PHP/201311/21292.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.