Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/tutor-pro/vendor/guzzlehttp/psr7/src/Header.php

Keine Baseline-Datei – Diff nur gegen leer.
Zur Liste
1 -
1 + <?php
2 +
3 + declare(strict_types=1);
4 +
5 + namespace GuzzleHttp\Psr7;
6 +
7 + final class Header
8 + {
9 + /**
10 + * Parse an array of header values containing ";" separated data into an
11 + * array of associative arrays representing the header key value pair data
12 + * of the header. When a parameter does not contain a value, but just
13 + * contains a key, this function will inject a key with a '' string value.
14 + *
15 + * @param string|array $header Header to parse into components.
16 + */
17 + public static function parse($header): array
18 + {
19 + static $trimmed = "\"' \n\t\r";
20 + $params = $matches = [];
21 +
22 + foreach ((array) $header as $value) {
23 + foreach (self::splitList($value) as $val) {
24 + $part = [];
25 + foreach (preg_split('/;(?=([^"]*"[^"]*")*[^"]*$)/', $val) ?: [] as $kvp) {
26 + if (preg_match_all('/<[^>]+>|[^=]+/', $kvp, $matches)) {
27 + $m = $matches[0];
28 + if (isset($m[1])) {
29 + $part[trim($m[0], $trimmed)] = trim($m[1], $trimmed);
30 + } else {
31 + $part[] = trim($m[0], $trimmed);
32 + }
33 + }
34 + }
35 + if ($part) {
36 + $params[] = $part;
37 + }
38 + }
39 + }
40 +
41 + return $params;
42 + }
43 +
44 + /**
45 + * Converts an array of header values that may contain comma separated
46 + * headers into an array of headers with no comma separated values.
47 + *
48 + * @param string|array $header Header to normalize.
49 + *
50 + * @deprecated Use self::splitList() instead.
51 + */
52 + public static function normalize($header): array
53 + {
54 + $result = [];
55 + foreach ((array) $header as $value) {
56 + foreach (self::splitList($value) as $parsed) {
57 + $result[] = $parsed;
58 + }
59 + }
60 +
61 + return $result;
62 + }
63 +
64 + /**
65 + * Splits a HTTP header defined to contain a comma-separated list into
66 + * each individual value. Empty values will be removed.
67 + *
68 + * Example headers include 'accept', 'cache-control' and 'if-none-match'.
69 + *
70 + * This method must not be used to parse headers that are not defined as
71 + * a list, such as 'user-agent' or 'set-cookie'.
72 + *
73 + * @param string|string[] $values Header value as returned by MessageInterface::getHeader()
74 + *
75 + * @return string[]
76 + */
77 + public static function splitList($values): array
78 + {
79 + if (!\is_array($values)) {
80 + $values = [$values];
81 + }
82 +
83 + $result = [];
84 + foreach ($values as $value) {
85 + if (!\is_string($value)) {
86 + throw new \TypeError('$header must either be a string or an array containing strings.');
87 + }
88 +
89 + $v = '';
90 + $isQuoted = false;
91 + $isEscaped = false;
92 + for ($i = 0, $max = \strlen($value); $i < $max; ++$i) {
93 + if ($isEscaped) {
94 + $v .= $value[$i];
95 + $isEscaped = false;
96 +
97 + continue;
98 + }
99 +
100 + if (!$isQuoted && $value[$i] === ',') {
101 + $v = \trim($v);
102 + if ($v !== '') {
103 + $result[] = $v;
104 + }
105 +
106 + $v = '';
107 + continue;
108 + }
109 +
110 + if ($isQuoted && $value[$i] === '\\') {
111 + $isEscaped = true;
112 + $v .= $value[$i];
113 +
114 + continue;
115 + }
116 + if ($value[$i] === '"') {
117 + $isQuoted = !$isQuoted;
118 + $v .= $value[$i];
119 +
120 + continue;
121 + }
122 +
123 + $v .= $value[$i];
124 + }
125 +
126 + $v = \trim($v);
127 + if ($v !== '') {
128 + $result[] = $v;
129 + }
130 + }
131 +
132 + return $result;
133 + }
134 + }
135 +