使用php判斷網(wǎng)頁(yè)是否gzip壓縮
但在瀏覽器里看是正常的。
因?yàn)槲矣羞^(guò)相關(guān)經(jīng)驗(yàn)馬上發(fā)現(xiàn)是網(wǎng)站開啟了gzip而file_get_contents 獲得的是壓縮過(guò)的頁(yè)面,而不是解壓過(guò)的頁(yè)面(不知道是不是要file_get_conttents 請(qǐng)求網(wǎng)頁(yè)時(shí)帶上相應(yīng)的參數(shù),直接獲得沒有被gzip壓縮過(guò)的網(wǎng)頁(yè)?)
剛好我前不久剛看到可以用讀取文件的前2個(gè)字節(jié)判斷文件類型。群里面的朋友也說(shuō)gzip壓縮過(guò)的網(wǎng)頁(yè)(gbk編碼)前2字節(jié)是 1F 8B 于是就可以判斷網(wǎng)頁(yè)是否gzip壓縮過(guò)。
代碼如下:
//米爾軍事網(wǎng)采用 gzip壓縮網(wǎng)頁(yè)
//file_get_contents 直接獲得的網(wǎng)頁(yè)是亂碼。
header('Content-Type:text/html;charset=utf-8' );
$url = 'http://www.miercn.com';
$file = fopen($url, "rb");
//只讀2字節(jié) 如果為(16進(jìn)制)1f 8b (10進(jìn)制)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:
//網(wǎng)站開啟了gzip
$isGzip = 1;
break;
default:
$isGzip = 0;
}
$url = $isGzip ? "compress.zlib://".$url:$url; // 三元表達(dá)式
$mierHtml = file_get_contents($url); //獲得米爾軍事網(wǎng)數(shù)據(jù)
$mierHtml = iconv("gbk","utf-8",$mierHtml);
echo $mierHtml;
- php使用ob_start()實(shí)現(xiàn)圖片存入變量的方法
- PHP使用ob_start生成html頁(yè)面的方法
- php緩沖 output_buffering和ob_start使用介紹
- 用php的ob_start來(lái)生成靜態(tài)頁(yè)面的方法分析
- 用PHP ob_start()控制瀏覽器cache、生成html實(shí)現(xiàn)代碼
- php讀取遠(yuǎn)程gzip壓縮網(wǎng)頁(yè)的方法
- PHP壓縮html網(wǎng)頁(yè)代碼(清除空格,換行符,制表符,注釋標(biāo)記)
- php中ob函數(shù)緩沖機(jī)制深入理解
- php中ob_get_length緩沖與獲取緩沖長(zhǎng)度實(shí)例
- php ob_flush,flush在ie中緩沖無(wú)效的解決方法
- php中ob(Output Buffer 輸出緩沖)函數(shù)使用方法
- php基于ob_start(ob_gzhandler)實(shí)現(xiàn)網(wǎng)頁(yè)壓縮功能的方法
相關(guān)文章
sourcesafe管理phpproj文件的補(bǔ)充說(shuō)明(downmoon)
在使用vs.php+ sourcesafe管理代碼時(shí),發(fā)現(xiàn)有時(shí)候并不能從vs.net IDE中正確獲取phpproj文件下的所有文件。但從sourcesafe IDE下卻可以。2009-04-04談PHP生成靜態(tài)頁(yè)面分析 模板+緩存+寫文件
談PHP生成靜態(tài)頁(yè)面 模板+緩存+寫文件,大家可以參考下代碼。2009-08-08PHP封裝的svn類使用內(nèi)置svn函數(shù)實(shí)現(xiàn)根據(jù)svn版本號(hào)導(dǎo)出相關(guān)文件示例
這篇文章主要介紹了PHP封裝的svn類使用內(nèi)置svn函數(shù)實(shí)現(xiàn)根據(jù)svn版本號(hào)導(dǎo)出相關(guān)文件,結(jié)合實(shí)例形式分析了php封裝的svn操作類與根據(jù)版本導(dǎo)出相關(guān)版本文件操作技巧,需要的朋友可以參考下2018-06-06php使用SAE原生Mail類實(shí)現(xiàn)各種類型郵件發(fā)送的方法
這篇文章主要介紹了php使用SAE原生Mail類實(shí)現(xiàn)各種類型郵件發(fā)送的方法,結(jié)合實(shí)例形式分析了SAE平臺(tái)解決郵件發(fā)送問題的相關(guān)操作技巧,需要的朋友可以參考下2016-10-10Zend Framework上傳文件重命名的實(shí)現(xiàn)方法
這篇文章主要介紹了Zend Framework上傳文件重命名的實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Zend Framework上傳文件重命名的具體操作步驟與配置、檢測(cè)、重命名操作的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-11-11PHP 執(zhí)行系統(tǒng)外部命令 system() exec() passthru()
PHP作為一種服務(wù)器端的腳本語(yǔ)言,象編寫簡(jiǎn)單,或者是復(fù)雜的動(dòng)態(tài)網(wǎng)頁(yè)這樣的任務(wù),它完全能夠勝任。但事情不總是如此,有時(shí)為了實(shí)現(xiàn)某個(gè)功能,必須借助于操作系統(tǒng)的外部程序(或者稱之為命令),這樣可以做到事半功倍。2009-08-08一些需要禁用的PHP危險(xiǎn)函數(shù)(disable_functions)
有時(shí)候?yàn)榱税踩覀冃枰粢恍㏄HP危險(xiǎn)函數(shù),整理如下需要的朋友可以參考下2012-02-02PHP基于imagick擴(kuò)展實(shí)現(xiàn)合成圖片的兩種方法【附imagick擴(kuò)展下載】
這篇文章主要介紹了PHP基于imagick擴(kuò)展實(shí)現(xiàn)合成圖片的兩種方法,結(jié)合實(shí)例形式分析了php使用imagick擴(kuò)展進(jìn)行圖片合并的具體操作方法與相關(guān)實(shí)現(xiàn)技巧,并附帶imagick擴(kuò)展下載地址與配置方法,需要的朋友可以參考下2017-11-11