PHP curl响应参数与响应header 中的参数获取到如下所示:
HTTP/1.1 200 OK Date: Wed, 01 Mar 2017 09:14:06 GMT Content-Type: application/vnd.ehking-v2.0+json Transfer-Encoding: chunked Connection: keep-alive Key: 777777777777777 chantId: 1213123
{"data":"55555555555555555555555555555555555"}请问如何取出 Key  ,chantId和data 的值。
小弟在这万分感谢。

解决方案 »

  1.   

    $s = 'HTTP/1.1 200 OK Date: Wed, 01 Mar 2017 09:14:06 GMT Content-Type: application/vnd.ehking-v2.0+json Transfer-Encoding: chunked Connection: keep-alive Key: 777777777777777 chantId: 1213123
    {"data":"55555555555555555555555555555555555"}
    ';
    preg_match_all('/(Key|chantId|data"):(\s+|")([^"\s]+)/s', $s, $m);
    print_r($m);Array
    (
        [0] => Array
            (
                [0] => Key: 777777777777777
                [1] => chantId: 1213123
                [2] => data":"55555555555555555555555555555555555
            )    [1] => Array
            (
                [0] => Key
                [1] => chantId
                [2] => data"
            )    [2] => Array
            (
                [0] =>  
                [1] =>  
                [2] => "
            )    [3] => Array
            (
                [0] => 777777777777777
                [1] => 1213123
                [2] => 55555555555555555555555555555555555
            ))
      

  2.   

    使用curl不需要自己分析http的header的,直接返回的就是content了    $data = array();
        $ch = curl_init();  
        curl_setopt($ch, CURLOPT_URL, $url);  
        curl_setopt($ch, CURLOPT_POST, true);  
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));  
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);   
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);  
      
        $response = curl_exec($ch);  
      
        if($error=curl_error($ch)){  
            die($error);  
        }  
      
        curl_close($ch); 
      

  3.   

    如果得到$Key = 777777777777777;
    $chantId = 1213123;
    $data = 55555555555555555555555555555555555;
      

  4.   

    我需要得到里面的值。
    得到$Key = 777777777777777;
    $chantId = 1213123;
    $data = 55555555555555555555555555555555555;
      

  5.   

    加一句
    list($Key, $chantId, $data) = $m[3];
      

  6.   

    自己解析 http 协议头信息,不如用 get_headers 函数
    还可以用 CURLOPT_WRITEFUNCTION 回调自行解析时需注意:头信息是以 \r\n 分隔的
      

  7.   


    $s = 'HTTP/1.1 200 OK Date: Wed, 01 Mar 2017 09:14:06 GMT Content-Type: application/vnd.ehking-v2.0+json Transfer-Encoding: chunked Connection: keep-alive Key: 777777777777777 chantId: 1213123
    {"data":"55555555555555555555555555555555555"}
    ';
    preg_match_all('/(Key|chantId|data"):(\s+|")([^"\s]+)/s', $s, $m);
    $data = array();
    $data['Key'] = $m[3][0];
    $data['chantId'] = $m[3][1];
    $data['data'] = $m[3][2];print_r($data);Array
    (
        [Key] => 777777777777777
        [chantId] => 1213123
        [data] => 55555555555555555555555555555555555
    )