You are here

public static function UrlHelper::buildQuery in Drupal 8

Same name and namespace in other branches
  1. 9 core/lib/Drupal/Component/Utility/UrlHelper.php \Drupal\Component\Utility\UrlHelper::buildQuery()
  2. 10 core/lib/Drupal/Component/Utility/UrlHelper.php \Drupal\Component\Utility\UrlHelper::buildQuery()

Parses an array into a valid, rawurlencoded query string.

Function rawurlencode() is RFC3986 compliant, and as a consequence RFC3987 compliant. The latter defines the required format of "URLs" in HTML5. urlencode() is almost the same as rawurlencode(), except that it encodes spaces as "+" instead of "%20". This makes its result non compliant to RFC3986 and as a consequence non compliant to RFC3987 and as a consequence not valid as a "URL" in HTML5.

Parameters

array $query: The query parameter array to be processed; for instance, \Drupal::request()->query->all().

string $parent: (optional) Internal use only. Used to build the $query array key for nested items. Defaults to an empty string.

Return value

string A rawurlencoded string which can be used as or appended to the URL query string.

Related topics

24 calls to UrlHelper::buildQuery()
BigPipeStrategy::generateBigPipePlaceholderId in core/modules/big_pipe/src/Render/Placeholder/BigPipeStrategy.php
Generates a BigPipe placeholder ID.
CustomPageExceptionHtmlSubscriberTest::testHandleWithGetRequest in core/tests/Drupal/Tests/Core/EventSubscriber/CustomPageExceptionHtmlSubscriberTest.php
Tests onHandleException with a GET request.
CustomPageExceptionHtmlSubscriberTest::testHandleWithPostRequest in core/tests/Drupal/Tests/Core/EventSubscriber/CustomPageExceptionHtmlSubscriberTest.php
Tests onHandleException with a POST request.
drupal_current_script_url in core/includes/install.inc
Returns the URL of the current script, with modified query parameters.
Endpoint::buildResourceUrl in core/modules/media/src/OEmbed/Endpoint.php
Builds and returns the endpoint URL.

... See full list

File

core/lib/Drupal/Component/Utility/UrlHelper.php, line 42

Class

UrlHelper
Helper class URL based methods.

Namespace

Drupal\Component\Utility

Code

public static function buildQuery(array $query, $parent = '') {
  $params = [];
  foreach ($query as $key => $value) {
    $key = $parent ? $parent . rawurlencode('[' . $key . ']') : rawurlencode($key);

    // Recurse into children.
    if (is_array($value)) {
      $params[] = static::buildQuery($value, $key);
    }
    elseif (!isset($value)) {
      $params[] = $key;
    }
    else {

      // For better readability of paths in query strings, we decode slashes.
      $params[] = $key . '=' . str_replace('%2F', '/', rawurlencode($value));
    }
  }
  return implode('&', $params);
}