PHP: převod hlaviček odpovědi na asociativního pole
16. 9. 2022Při tvorbě serveru nebo klienta API se jistě každý setká s problémem čtení hlaviček odpovědi které se standardně vrací jako pole řetězců bez klíče. Níže si ukážeme jak jednoduše převést pole hlaviček na asociativní pole pro pohodlnější zpracování.
// Funkce pro parsování hlaviček na associativní pole
function parseHeadersToAssociativeArray(array $headers): array
{
foreach ($headers as $header) {
// Jednotlivé hlavičky rozdělíme na klíče a jejich hodnoty
$t = explode(':', $header, 2);
// Separujeme HTTP verzi a status od ostatních hlaviček
if (isset($t[1])) {
$headers[trim($t[0])] = trim($t[1]);
} elseif (preg_match('#HTTP\/([0-9\.]+)\s+(\d+)#', $header, $output)) {
$headers['_protocolVersion'] = (int) $output[1];
$headers['_responseCode'] = (int) $output[2];
}
}
return $headers;
}
// Následné použití
$response = file_get_contents(...);
print_r(parseHeadersToAssociativeArray($http_response_header));
print_r($response);
Výše uvedený fragment nám do vstupního pole hlaviček přidá asociativní hodnoty kde klíčem je název hlavičky a výsledné pole hlaviček ještě rozšiřuje o dvě nové hodnoty a to “_protocolVersion” a “_responseCode”, které jsou standardně zapsané dohromady “HTTP/1.1 200 OK”.