• file_get_contents 抓取网页乱码。


    iconv

    string iconv ( string $in_charset , string $out_charset , string $str )

    mb_convert_encoding

    string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding ] )

    试了两个编码转换函数都无法 解决。然后发现要是编码问题,至少要能看见HTML标签。所以不是编码的错。最后想到gzip。

    PHP已经自带了gzip解压函数 :

    gzdecode

    string gzdecode ( string $data [, int $length ] )
     
    在PHP版本5.4以上可用。

    PHP的file_get_contents获取远程页面内容,如果是gzip编码过的,返回的字符串就是编码后的乱码,如何解决gzip问题方法有两种:

    curl解决:

    复制代码
    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;
    }
    复制代码

    采用gzip编码格式

    file_get_contents解决:

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

    无论页面是否经过gzip压缩,上述代码都可以正常工作!

    PHP 4.3.0以后版本支持,还可以用于fopen之类的函数~!

    解决方法:

    $url = 'http://m.weather.com.cn/data/101170101.html';
    
    echo '<pre>'; 
    
    print_r(file_get_contents("compress.zlib://".$url));//打开gzip压缩过的页面。 路径前不加compress.zlib:// 打开会有乱码。  
     
     
  • 相关阅读:
    Android ANR 知多少
    电源管理
    功耗分析
    手机功耗测试
    Battery Historian
    Android 电量优化
    Android手机功耗
    功耗 Log 抓取要求规范
    Android 手机无法进入系统解决方案
    定屏死机问题操作指南
  • 原文地址:https://www.cnblogs.com/gantoday/p/8362264.html
Copyright © 2020-2023  润新知