donglvhe7591 2016-03-03 02:17
浏览 43
已采纳

获取gzip压缩时的未定义偏移警告

My code originally worked for most websites except some like (Facebook.com). So I inserted curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); and it started working for all websites after and even getting the right results I needed.

My issue is that I am getting Notice: Undefined offset: 1 on this line:

list($k,$v)=explode(':',$header);

even though I am getting the right result back.

I have noticed that I only get that notice when I have the CURLOPT_FOLLOWLOCATION line but without that line, I am unable to get some websites gzip compression info

My code:

$ch = curl_init("http://facebook.com/");
curl_setopt($ch,CURLOPT_HTTPHEADER,array('Accept-Encoding: gzip, deflate'));
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$buffer = curl_exec($ch);
$curl_info = curl_getinfo($ch);
curl_close($ch);
$header_size = $curl_info["header_size"];
$headers = substr($buffer, 0, $header_size);
$body = substr($buffer, $header_size);


function getEncoding(&$headers){
    $arr=explode("
",trim($headers));
    array_shift($arr);
    foreach($arr as $header){
        list($k,$v)=explode(':',$header);
        if ('content-encoding'==strtolower($k)){
            return trim($v);
        }
    }
    return false;
}   

$encoding=getEncoding($headers);

if ($encoding) {
    echo "Using: ".$encoding;
}else{
    echo "None";
}
  • 写回答

1条回答 默认 最新

  • duanche9384 2016-03-03 03:05
    关注

    Check whether the header contains : before calling explode.

    foreach($arr as $header){
        if (strstr($header, ':')) {
            list($k,$v)=explode(':',$header);
            if ('content-encoding'==strtolower($k)){
                return trim($v);
            }
        }
    }
    

    This will ignore any headers that aren't of the form Name: value. This could happen if the response starts with 100 Continue, as the 200 HTTP/1.1 will be mixed into it later.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧