程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 使用php判斷網頁是否gzip壓縮

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

編輯:關於PHP編程

    昨天晚上群裡有朋友采集網頁時發現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;

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved