Blame | Last modification | View Log | RSS feed
<?phpnamespace GuzzleHttp\Psr7;final class Header{/*** Parse an array of header values containing ";" separated data into an* array of associative arrays representing the header key value pair data* of the header. When a parameter does not contain a value, but just* contains a key, this function will inject a key with a '' string value.** @param string|array $header Header to parse into components.** @return array Returns the parsed header values.*/public static function parse($header){static $trimmed = "\"' \n\t\r";$params = $matches = [];foreach (self::normalize($header) as $val) {$part = [];foreach (preg_split('/;(?=([^"]*"[^"]*")*[^"]*$)/', $val) as $kvp) {if (preg_match_all('/<[^>]+>|[^=]+/', $kvp, $matches)) {$m = $matches[0];if (isset($m[1])) {$part[trim($m[0], $trimmed)] = trim($m[1], $trimmed);} else {$part[] = trim($m[0], $trimmed);}}}if ($part) {$params[] = $part;}}return $params;}/*** Converts an array of header values that may contain comma separated* headers into an array of headers with no comma separated values.** @param string|array $header Header to normalize.** @return array Returns the normalized header field values.*/public static function normalize($header){if (!is_array($header)) {return array_map('trim', explode(',', $header));}$result = [];foreach ($header as $value) {foreach ((array) $value as $v) {if (strpos($v, ',') === false) {$result[] = $v;continue;}foreach (preg_split('/,(?=([^"]*"[^"]*")*[^"]*$)/', $v) as $vv) {$result[] = trim($vv);}}}return $result;}}