function drupal_http_build_query

Parses an array into a valid, rawurlencoded query string.

This differs from http_build_query() as we need to rawurlencode() (instead of urlencode()) all query parameters.

Parameters

$query: The query parameter array to be processed, e.g. $_GET.

$parent: Internal use only. Used to build the $query array key for nested items.

Return value

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

See also

drupal_get_query_parameters()

Related topics

10 calls to drupal_http_build_query()
drupal_current_script_url in drupal/core/includes/install.inc
Returns the URL of the current script, with modified query parameters.
drupal_get_destination in drupal/core/includes/common.inc
Prepares a 'destination' URL query parameter for use with drupal_goto().
FieldPluginBase::render_as_link in drupal/core/modules/views/lib/Drupal/views/Plugin/views/field/FieldPluginBase.php
Render this field as a link, with the info from a fieldset set by the user.
install_redirect_url in drupal/core/includes/install.core.inc
Returns the URL that should be redirected to during an installation request.
MenuTest::assertMenuLink in drupal/core/modules/menu/lib/Drupal/menu/Tests/MenuTest.php
Fetch the menu item from the database and compare it to the specified array.

... See full list

File

drupal/core/includes/common.inc, line 493
Common functions that many Drupal modules will need to reference.

Code

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

    // Recurse into children.
    if (is_array($value)) {
      $params[] = drupal_http_build_query($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);
}