PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.6.4
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.6.4
4.6.6 4.6.5 4.6.4 4.6.3 4.6.2 4.6.1 4.6.0 4.5.1 4.5.0 4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / vendor / guzzlehttp / psr7 / src / Header.php
surecart / vendor / guzzlehttp / psr7 / src Last commit date
Exception 1 year ago AppendStream.php 1 year ago BufferStream.php 1 year ago CachingStream.php 1 year ago DroppingStream.php 1 year ago FnStream.php 1 year ago Header.php 1 year ago HttpFactory.php 1 year ago InflateStream.php 1 year ago LazyOpenStream.php 1 year ago LimitStream.php 1 year ago Message.php 1 year ago MessageTrait.php 1 year ago MimeType.php 1 year ago MultipartStream.php 1 year ago NoSeekStream.php 1 year ago PumpStream.php 1 year ago Query.php 1 year ago Request.php 1 year ago Response.php 1 year ago Rfc7230.php 1 year ago ServerRequest.php 1 year ago Stream.php 1 year ago StreamDecoratorTrait.php 1 year ago StreamWrapper.php 1 year ago UploadedFile.php 1 year ago Uri.php 1 year ago UriComparator.php 1 year ago UriNormalizer.php 1 year ago UriResolver.php 1 year ago Utils.php 1 year ago
Header.php
135 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace SureCartVendors\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