Warning: Error while sending QUERY packet. PID=4752 in /home/wwwroot/coco/domain/cnlamp/web/wp-includes/wp-db.php on line 1877 PHP使用file_get_contents获取远程页面内容乱码的问题解决方法 | LAMP新闻|技巧|经验|资讯站
现在的位置: 首页PHP>正文
PHP使用file_get_contents获取远程页面内容乱码的问题解决方法
发表于3年前 PHP 暂无评论

今天使用php采集某网站,发现get_file_contents获取的内容全是乱码,检查后发现不是因为编码的问题。经查找,发现PHP的file_get_contents获取远程页面内容的时候,如果远程网页内容是gzip编码过的,返回的字符串就是编码后的乱码

解决方法如下:

1、找个ungzip的函数来转换下
2、给你的url加个前缀,这样调用

1
$content = file_get_contents("compress.zlib://".$url);

无论页面是否经过gzip压缩,上述代码都可以正常工作!
3、使用curl模块同样可解决问题

1
2
3
4
5
6
7
8
9
10
function curl_get($url, $gzip=false){
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
    if($gzip)
        curl_setopt($curl, CURLOPT_ENCODING, "gzip"); // 关键在这里
    $content = curl_exec($curl);
    curl_close($curl);
    return $content;
}

给我留言

留言无头像?


×
腾讯微博