簡體   English   中英

PHP curl獲取標頭參數

[英]PHP curl get header parameters

我正在使用curl與PHP來獲取API調用的標頭響應。

這是我的代碼:

$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返回標題:

HTTP / 1.1 200 OK日期:2016年6月15日星期三13:48:43 GMT服務器:Apache / 2.4.18(Unix)PHP / 5.5.31 X-Powered-By:PHP / 5.5.31 X-Rate-Limit-限制:1個剩余X速率限制:0個X速率限制重置:0個X分頁總數:1個X分頁頁數:1個X分頁當前頁數:1個X-每頁分頁:20鏈接:; rel = self內容類型:application / json; 字符集= UTF-8 1

有沒有一種方法可以訪問單個標頭變量(如數組)?

先謝謝您的幫助。

您可以使用CURLOPT_HEADERFUNCTION為Curl分配一個回調以處理響應中的標頭。 通過為回調提供$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現在將包含響應頭的關聯數組

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM