PluginProbe
Depicter — Popup & Slider Builder / 1.3.2
Depicter — Popup & Slider Builder v1.3.2
4.8.1 trunk 1.0.0 1.1.0 1.1.2 1.1.4 1.1.6 1.1.7 1.1.8 1.1.9 1.2.0 1.3.0 1.3.1 1.3.2 1.3.3 1.3.5 1.3.8 1.5.0 1.5.1 1.5.2 1.5.5 1.6.0 1.6.1 1.6.2 1.7.0 All 76 releases
depicter / modules / GuzzleHttp / Psr7 / Header.php

Header.php in Depicter — Popup & Slider Builder 1.3.2, at modules/GuzzleHttp/Psr7/Header.php

72 lines 2.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Depicter\GuzzleHttp\Psr7;
4
5 final class Header
6 {
7 /**
8 * Parse an array of header values containing ";" separated data into an
9 * array of associative arrays representing the header key value pair data
10 * of the header. When a parameter does not contain a value, but just
11 * contains a key, this function will inject a key with a '' string value.
12 *
13 * @param string|array $header Header to parse into components.
14 *
15 * @return array Returns the parsed header values.
16 */
17 public static function parse($header)
18 {
19 static $trimmed = "\"' \n\t\r";
20 $params = $matches = [];
21
22 foreach (self::normalize($header) as $val) {
23 $part = [];
24 foreach (preg_split('/;(?=([^"]*"[^"]*")*[^"]*$)/', $val) as $kvp) {
25 if (preg_match_all('/<[^>]+>|[^=]+/', $kvp, $matches)) {
26 $m = $matches[0];
27 if (isset($m[1])) {
28 $part[trim($m[0], $trimmed)] = trim($m[1], $trimmed);
29 } else {
30 $part[] = trim($m[0], $trimmed);
31 }
32 }
33 }
34 if ($part) {
35 $params[] = $part;
36 }
37 }
38
39 return $params;
40 }
41
42 /**
43 * Converts an array of header values that may contain comma separated
44 * headers into an array of headers with no comma separated values.
45 *
46 * @param string|array $header Header to normalize.
47 *
48 * @return array Returns the normalized header field values.
49 */
50 public static function normalize($header)
51 {
52 if (!is_array($header)) {
53 return array_map('trim', explode(',', $header));
54 }
55
56 $result = [];
57 foreach ($header as $value) {
58 foreach ((array) $value as $v) {
59 if (strpos($v, ',') === false) {
60 $result[] = $v;
61 continue;
62 }
63 foreach (preg_split('/,(?=([^"]*"[^"]*")*[^"]*$)/', $v) as $vv) {
64 $result[] = trim($vv);
65 }
66 }
67 }
68
69 return $result;
70 }
71 }
72