Web サイトを収集するには、ターゲット ステーションは gzip 圧縮を使用して Web ページを送信します。本来は、http ヘッダー Accept-Encoding: ID を送信するだけで済みます。あるいは、このヘッダーを送信しないことで、ターゲット ステーションがgzip で圧縮されていないページは、残念ながら、ターゲット ステーションがクライアントの要求を無視し、依然として gzip データを返すため、文字化けが発生します。
実際には、PHP では gzip を解凍するのが非常に簡単で、組み込みの gzdecode 関数を使用するだけで済みます。しかし、残念ながら、長い間設定した後、gzdecode 関数をサポートできなかったため、作業する必要がありました。その周り:
function gzdecode ($data) { $flags = ord(substr($data, 3, 1));ヘッダレン = 10; $ファイル名レン = 0; if ($flags & 4) { $extralen = unpack('v' ,substr($)データ、10, 2)); $extralen = $extralen[1]; $headerlen += 2 + $extralen; if ($flags & 8) // ファイル名 $headerlen = strpos($data, chr(0), $headerlen) + 1; if ($flags & 16) // コメント $headerlen = strpos($ data, chr(0), $headerlen) + 1; if ($flags & 2) // ファイルの終わりの CRC $headerlen += 2; (substr($data, $headerlen)); if ($unpacked === FALSE) $unpacked = $data } >} |
以下は引用内容です: $f=@file_get_contents("http://www.itlearner.com")echo gzdecode($f); |