ホームページ >バックエンド開発 >PHPチュートリアル >Curl が文字化けを選択し、PHP を収集できない

Curl が文字化けを選択し、PHP を収集できない

WBOY
WBOYオリジナル
2016-06-13 12:51:14848ブラウズ

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>;
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。