PHP: převod hlaviček odpovědi na asociativního pole

16. 9. 2022

Př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”.

Nejnovější příspěvky