1. 程式人生 > >用file_get_contents抓取網頁亂碼的2種解決方式

用file_get_contents抓取網頁亂碼的2種解決方式

今天自己在寫一個程式,抓取別人的網頁,之前公司有些功能也會需要,但是今天在抓取網頁的時候發現了一個問題 用file_get_contents抓取網頁發現如截圖所示的亂碼情況

file_get_contents抓取網頁亂碼

於是用轉換編碼

$contents = iconv("gb2312", "utf-8//IGNORE",$contents);

之前遇到就算亂碼也是網頁編碼的問題,html標籤頁不會有問題,問題還是沒有解決
www.phpsong.com頭部資訊

於是網上找了一下
原因:說是獲取的頭部資訊當中有Content-Encoding: gzip說明內容是GZIP壓縮的
然後我試著抓取了自己的部落格,發現可以正常抓取,頭部資訊中也帶有Content-Encoding: gzip,為什麼會這樣就不清楚了,之後在解決

下面我推薦2種解決方法:

①、伺服器安裝zlib庫

$contents = file_get_contents("compress.zlib://".$url);

②. 使用CURL代替file_get_contents

function curl_get($url, $gzip=false){
 $curl = curl_init($url);
 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
 if($gzip) curl_setopt($curl, CURLOPT_ENCODING, "gzip"); // 關鍵在這裡
 $content = curl_exec($curl);
 curl_close($curl);
 return $content;
}

自此問題解決了,繼續下面的程式


QQ交流群:136351212
檢視原文:http://www.phpsong.com/1404.html