[ Index ]

PHP Cross Reference of phpBB-3.3.14-deutsch

title

Body

[close]

/vendor/guzzlehttp/psr7/src/ -> Header.php (source)

   1  <?php
   2  
   3  namespace 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  }


Generated: Mon Nov 25 19:05:08 2024 Cross-referenced by PHPXref 0.7.1