您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)怎么使用php判斷網(wǎng)頁是否gzip壓縮,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
昨天晚上群里有朋友采集網(wǎng)頁時(shí)發(fā)現(xiàn)file_get_contents 獲得的網(wǎng)頁保存到本地為亂碼,響應(yīng)的header 里 Content-Encoding:gzip
但在瀏覽器里看是正常的。
因?yàn)槲矣羞^相關(guān)經(jīng)驗(yàn)馬上發(fā)現(xiàn)是網(wǎng)站開啟了gzip而file_get_contents 獲得的是壓縮過的頁面,而不是解壓過的頁面(不知道是不是要file_get_conttents 請(qǐng)求網(wǎng)頁時(shí)帶上相應(yīng)的參數(shù),直接獲得沒有被gzip壓縮過的網(wǎng)頁?)
剛好我前不久剛看到可以用讀取文件的前2個(gè)字節(jié)判斷文件類型。群里面的朋友也說gzip壓縮過的網(wǎng)頁(gbk編碼)前2字節(jié)是 1F 8B 于是就可以判斷網(wǎng)頁是否gzip壓縮過。
代碼如下:
//米爾軍事網(wǎng)采用 gzip壓縮網(wǎng)頁 //file_get_contents 直接獲得的網(wǎng)頁是亂碼。 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;
關(guān)于“怎么使用php判斷網(wǎng)頁是否gzip壓縮”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。