2016-06-15 95 views
2

我使用curl和PHP獲取API調用的標題響應。PHP curl獲取標題參數

這是我的代碼:

$curl = curl_init(); 

curl_setopt($curl, CURLOPT_URL,   'http://localapi.com/v1/users'); 
curl_setopt($curl, CURLOPT_HEADER,   true); 
curl_setopt($curl, CURLOPT_NOBODY,   true); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_TIMEOUT,  10); 
curl_setopt($curl, CURLOPT_HTTPHEADER,  array("authorization: Basic dmt5MVVTeXg3ZXpKYXVEZGtta2phZThfQ0tXa2tTQkY6")); 
$response = curl_exec($curl); 

$response returna頭:

HTTP/1.1 200 OK日期:星期三,2016年6月15日13時48分43秒格林尼治標準時間服務器:Apache的 /2.4.18(Unix)PHP/5.5.31 X-Powered-By:PHP/5.5.31 X-Rate-Limit-Limit:1 X-Rate-Limit-Remaining:0 X-Rate-Limit-Reset: X-Pagination-Total-Count:1 X-Pagination-Page-Count:0 X-Pagination-Current-Page:1 X-Pagination - 每頁:20鏈接:; rel = self Content-Type:application/json; charset = UTF-8 1

是否有一種方法可以訪問單個標題變量,如數組?

在此先感謝您的幫助。

+0

分割上行分解的關聯數組。每個http頭是一行文本。 –

回答

1

您可以爲Curl分配一個回叫來處理響應中的標題,使用CURLOPT_HEADERFUNCTION。通過爲回調分配結果提供$headers變量,您可以在curl_exec完成後以數組的形式訪問它們。

$headers = []; 

curl_setopt($curl, CURLOPT_HEADERFUNCTION, function ($ch, $header) use (&$headers) { 
    $matches = array(); 

    if (preg_match('/^([^:]+)\s*:\s*([^\x0D\x0A]*)\x0D?\x0A?$/', $header, $matches)) 
    { 
     $headers[$matches[1]][] = $matches[2]; 
    } 

    return strlen($header); 
}); 

curl_exec($curl); 

$headers現在將包含響應頭