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时是丢码的.
这是怎么回事呢?如何解决?有哪位怎么呀?先谢谢了!!!没多少分了,不好意思。
------解决方案--------------------别的不说,我就是来拿分的.楼主记得给全分
1 2 3 4 5 6 | <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>
|
登入後複製