我知道getallheaders()
函数给了我一个http标头数组。但它提供了一个关键值,如
[Authorization] => oauth_consumer_key="publica5d53e674542272aefc2ea8ebf99bf9d771ed2b089bdfd1fbb74b5de69", oauth_signature="c7f63e8c01131d4384cdfe2cee5db7ce160aa27b", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1418220427", oauth_nonce="5488538b485ed", oauth_version="1.0"
除了手动爆炸数据之外,还有其他方法可以将上面的值转换为不带引号的关联数组吗?
更新
为了清楚起见,上面是PHP数组的关键值,其中[Authorization]
是键,oauth_consumer_key="publica5d53e674542272aefc2ea8ebf99bf9d771ed2b089bdfd1fbb74b5de69", oauth_signature="c7f63e8c01131d4384cdfe2cee5db7ce160aa27b", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1418220427", oauth_nonce="5488538b485ed", oauth_version=“1.0”
是我试图解构的值。
答案 0 :(得分:0)
你可以尝试一个简单的正则表达式:
$matches = array();
preg_match_all('/(\w+)="([^"]+)", /', $header.', ', $matches, PREG_SET_ORDER);
foreach ($matches as $match) {
echo($match[1].' -> '.$match[2]."\n");
}
我将", "
(逗号和空格)附加到标题以简化正则表达式。
或者您可以尝试手动解析字符串:
foreach (explode(', ', $header) as $item) {
list($key, $value) = explode('=', $item);
$value = trim($value, '"');
echo($key.' -> '.$value."\n");
}
答案 1 :(得分:0)
我找到了另一种解决方案,可以在一行代码中完全满足您的需求:
$pieces = parse_ini_string(str_replace(', ', "\n", $header));
print_r($pieces);