Я знаю, что 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"
- это значение Im, пытающееся деконструировать.
Вы можете попробовать простое регулярное выражение:
$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");
}
Я нашел другое решение, которое делает именно то, что вам нужно в одной строке кода:
$pieces = parse_ini_string(str_replace(', ', "\n", $header));
print_r($pieces);
str_replace('", ', "\"\n", $header);
parse_str()