昨夜、グループの友人が Web ページを収集したところ、file_get_contents で取得した Web ページをローカルに保存すると、応答ヘッダーに Content-Encoding: gzip
が含まれていましたが、ブラウザで表示すると正常でした。
関連した経験があるため、Web サイトが gzip をオンにし、file_get_contents が解凍されたページではなく圧縮されたページを取得したことがすぐにわかりました (Web ページをリクエストして取得するときに、file_get_contents が対応するパラメーターを持ってくる必要があるかどうかはわかりません) gzip で圧縮されていない Web ページ?)
ファイルの最初の 2 バイトを読み取ることでファイルの種類を判断できることをつい最近知りました。グループの友人らは、gzip 圧縮された Web ページ (gbk エンコード) の最初の 2 バイトは 1F 8B であるため、Web ページが gzip 圧縮されているかどうかを判断できるとも言いました。
コードは次のとおりです:
コードをコピーします コードは次のとおりです:
//Mire Military Network uses gzip to compress the Web page
//file_get_contents 直接取得した Web ページは文字化けします。
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)
$ strInfo = @unpack ("C2chars", $bin);
$typeCode = intval($strInfo['chars1'].$strInfo['chars2']);
switch ($typeCode)
ケース 31139:
//Web サイトでは gzip が有効になっています
$isGzip = 1;
デフォルト:
$isGzip = 0;
}
$url = $url; //三項式
$mierHtml = file_get_contents($url); //Mier軍事ネットワークデータを取得
$mierHtml = iconv("gbk","utf-8",$mierHtml);
http://www.bkjia.com/PHPjc/327839.html
www.bkjia.com
本当
http://www.bkjia.com/PHPjc/327839.html
技術記事昨夜、グループの友人が Web ページを収集したとき、file_get_contents で取得した Web ページをローカルに保存すると、応答ヘッダーに Content-Encoding: gzip が含まれていましたが、ブラウザで表示すると正常であったことがわかりました。 ...