note 112986 deleted from function.http-parse-headers by sobak

From: Date: Sun, 04 Dec 2016 07:22:35 +0000
Subject: note 112986 deleted from function.http-parse-headers by sobak
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-208066@lists.php.net to get a copy of this message
Note Submitter: ricardovermeltfoort at gmail dot com ---- Taken from http://www.php.net/manual/en/function.http-parse-headers.php#112917 and modified to: make folded work too, return status in first key. <?php if (!function_exists('http_parse_headers')) { function http_parse_headers($raw_headers) { $headers = array(); $key = ''; // [+] foreach(explode("\n", $raw_headers) as $i => $h) { $h = explode(':', $h, 2); if (isset($h[1])) { if (!isset($headers[$h[0]])) $headers[$h[0]] = trim($h[1]); elseif (is_array($headers[$h[0]])) { // $tmp = array_merge($headers[$h[0]], array(trim($h[1]))); // [-] // $headers[$h[0]] = $tmp; // [-] $headers[$h[0]] = array_merge($headers[$h[0]], array(trim($h[1]))); // [+] } else { // $tmp = array_merge(array($headers[$h[0]]), array(trim($h[1]))); // [-] // $headers[$h[0]] = $tmp; // [-] $headers[$h[0]] = array_merge(array($headers[$h[0]]), array(trim($h[1]))); // [+] } $key = $h[0]; // [+] } else // [+] { // [+] if (substr($h[0], 0, 1) == "\t") // [+] $headers[$key] .= "\r\n\t".trim($h[0]); // [+] elseif (!$key) // [+] $headers[0] = trim($h[0]);trim($h[0]); // [+] } // [+] } return $headers; } } ?> Example: <?php $headers = "HTTP/1.1 200 OK\r\n". "content-type: text/html; charset=UTF-8\r\n". "Server: Funky/1.0\r\n". "Set-Cookie: foo=bar\r\n". "Set-Cookie: baz=quux\r\n". "Folded: works\r\n\ttoo\r\n"; print_r(http_parse_headers($headers)); ?> The above example will output: Array ( [0] => HTTP/1.1 200 OK [content-type] => text/html; charset=UTF-8 [Server] => Funky/1.0 [Set-Cookie] => Array ( [0] => foo=bar [1] => baz=quux ) [Folded] => works too )

« previous php.notes (#208066) next »