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_RETURNTRANSFER , 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 (compatible; 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 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)');<br> $html=curl_exec($curl);<br> //$html=strstr($html,' $html=gzdecode($html);<br> var_dump($html);<br> <br> <br> function gzdecode($data) { <br> $len = strlen($data); <br> if ($len <font color="#FF8000">------解决方案--------------------</font><br> strcmp(substr($data,0,2),"\x1f\x8b")) { <br> return null; // Not GZIP format (See RFC 1952) <br> } <br> $method = ord(substr($data,2,1)); // Compression method <br> $flags = ord(substr($data,3,1)); // Flags <br> if ($flags & 31 != $flags) { <br> // Reserved bits are set -- NOT ALLOWED by RFC 1952 <br> return null; <br> } <br> // NOTE: $mtime may be negative (PHP integer limitations) <br> $mtime = unpack("V", substr($data,4,4)); <br> $mtime = $mtime[1]; <br> $xfl = substr($data,8,1); <br> $os = substr($data,8,1); <br> $headerlen = 10; <br> $extralen = 0; <br> $extra = ""; <br> if ($flags & 4) { <br> // 2-byte length prefixed EXTRA data in header <br> if ($len - $headerlen - 2 return false; // Invalid format <br> } <br> $extralen = unpack("v",substr($data,8,2)); <br> $extralen = $extralen[1]; <div class="clear"> </div>