如何在php中转换数组中的响应头

时间:2014-01-16 11:45:25

标签: php regex parsing http-headers

我正在使用Gcm发送通知,我也使用了curl。这是脚本

$registrationId=  array('adkbvkasdjb');
$headers=array(
    'Authorization: key=' . GOOGLE_API_KEY,
    'Content-Type: application/json'
);
$sendData=array(
    'msg'=>'any message');
$url= GCM_URL;

$details=array( 
    'registration_ids'=>$registrationId,
    'time_to_live'=> 48*60*60,
    'data'=>$sendData,
);
$ch=  curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_POST, TRUE);

curl_setopt($ch, CURLOPT_HEADER, TRUE);

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($details));

$result=  curl_exec($ch);

$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);

$header = substr($result, 0, $header_size);

$body = substr($result, $header_size);

// closing the curl connection
curl_close($ch);

现在我将响应的标题作为

HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Date: Thu, 16 Jan 2014 11:05:17 GMT
Expires: Thu, 16 Jan 2014 11:05:17 GMT
Cache-Control: private, max-age=0
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Server: GSE
Alternate-Protocol: 443:quic
Transfer-Encoding: chunked

由于我对正则表达式不是很好,我搜索了很多关于可以解析响应标题的方法,但都是徒劳的。

问题: -
 所以我只想知道是否有任何方法可以将标题响应解析为数组?

注意: - 我发现了一点关于http_parse_header()但是需要安装pcre所以我不确定它是否安装在我的REAL SERVER上:)

1 个答案:

答案 0 :(得分:1)

您不需要任何正则表达式。如果您在php.net上阅读了parse_http_headers文档的第一条评论,如果找不到pecl_http lib,则会有一些实现。 点击链接: http://www.php.net/manual/en/function.http-parse-headers.php#112986