ホームページ >バックエンド開発 >PHPチュートリアル >Curl が文字化けを選択し、PHP を収集できない
Curl は文字化けを収集し、PHP の収集に失敗します
PHP プログラムは gbk2312 でエンコードされています:
$url = "http://www.sina.com.cn";//gbk2312 エンコード
//$url = "http://www.163.com";//gbk2312 エンコード
//$url = "http://www.sohu.com";//gbk2312 エンコード
$ch =curl_init($url);
curl_setopt($ch, CURLOPT_RETURTRANSFER, true);// 取得した出力テキスト ストリームを返します
$ret =curl_exec($ch);
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
curl_close($ch);
echo $ret;
?>
sina.com.cn を収集する場合は正常ですが、163.com を収集すると空になり、sohu.com を収集するとコードが失われます
。
どうしたの?どうやって解決すればいいでしょうか?誰かが間違っているのですか?前もって感謝します! ! !残りポイントが少なくなりました、申し訳ありません。
<br> <br> $curl=curl_init('http://www.163.com');<br> curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);<br> curl_setopt($curl,CURLOPT_USERAGENT,'Mozilla/4.0 (互換性; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)');<br> $html=curl_exec($curl);<br> var_dump($html);<br> <br> <br> $curl=curl_init('http://www.sohu.com');<br> curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);<br> curl_setopt($curl,CURLOPT_USERAGENT,'Mozilla/4.0 (互換性; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)');<br> $html=curl_exec($curl);<br> //$html=strstr($html,'<');<br> $html=gzdecode($html);<br> var_dump($html);<br> <br> <br> 関数 gzdecode($data) { <br> $len = strlen($data); if ($len <br>-----解決策---------<font color="#FF8000"></font> strcmp(substr ( $data,0,2),"x1fx8b")) { <br> null を返します。 // GZIP 形式ではありません (RFC 1952 を参照) <br> } <br> $method = ord(substr($data,2,1)) // 圧縮方法 <br> $flags = ord(substr($data,3,1)) // フラグ <br> if ($flags & 31 != $flags) { <br> // 予約ビットが設定されています -- RFC 1952 では許可されていません <br> null を返します。 } <br> // 注: $mtime は負の値になる場合があります (PHP 整数の制限) <br> $mtime = unpack("V", substr($data,4,4)); $mtime = $mtime[1] <br>; $xfl = substr($data,8,1); $os = substr($data,8,1); $ヘッダーレン = 10; $extralen = 0; $extra = "" <br> if ($flags & 4) { <br> // ヘッダー内の 2 バイト長のプレフィックス付き EXTRA データ <br> if ($len - $headerlen - 2 < 8) { <br> false を返します // 無効な形式 <br> } <br> $extralen = unpack("v",substr($data,8,2)); $extralen = $extralen[1] <br><br>;