]+>|[^=]+/', $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. */ public static function normalize($header): array { $result = []; foreach ((array) $header as $value) { foreach ((array) $value as $v) { if (strpos($v, ',') === false) { $trimmed = trim($v); if ($trimmed !== '') { $result[] = $trimmed; } continue; } foreach (preg_split('/,(?=([^"]*"([^"]|\\\\.)*")*[^"]*$)/', $v) as $vv) { $trimmed = trim($vv); if ($trimmed !== '') { $result[] = $trimmed; } } } } return $result; } }