Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. Query.php

function Query::parse

Parse a query string into an associative array.

If multiple values are found for the same key, the value of that key value pair will become an array. This function does not parse nested PHP style arrays into an associative array (e.g., `foo[a]=1&foo[b]=2` will be parsed into `['foo[a]' => '1', 'foo[b]' => '2'])`.

Parameters

string $str Query string to parse:

int|bool $urlEncoding How the query string is encoded:

File

vendor/guzzlehttp/psr7/src/Query.php, line 20

Class

Query

Namespace

GuzzleHttp\Psr7

Code

public static function parse(string $str, $urlEncoding = true) : array {
    $result = [];
    if ($str === '') {
        return $result;
    }
    if ($urlEncoding === true) {
        $decoder = function ($value) {
            return rawurldecode(str_replace('+', ' ', (string) $value));
        };
    }
    elseif ($urlEncoding === PHP_QUERY_RFC3986) {
        $decoder = 'rawurldecode';
    }
    elseif ($urlEncoding === PHP_QUERY_RFC1738) {
        $decoder = 'urldecode';
    }
    else {
        $decoder = function ($str) {
            return $str;
        };
    }
    foreach (explode('&', $str) as $kvp) {
        $parts = explode('=', $kvp, 2);
        $key = $decoder($parts[0]);
        $value = isset($parts[1]) ? $decoder($parts[1]) : null;
        if (!array_key_exists($key, $result)) {
            $result[$key] = $value;
        }
        else {
            if (!is_array($result[$key])) {
                $result[$key] = [
                    $result[$key],
                ];
            }
            $result[$key][] = $value;
        }
    }
    return $result;
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal