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
Related topics
11 calls to drupal_http_build_query()
- CommonURLUnitTest::testDrupalHttpBuildQuery in modules/
simpletest/ tests/ common.test  - Test drupal_http_build_query().
 - DrupalHTTPRequestTestCase::testDrupalHTTPRequest in modules/
simpletest/ tests/ common.test  - drupal_current_script_url in includes/
install.inc  - Returns the URL of the current script, with modified query parameters.
 - drupal_get_destination in includes/
common.inc  - Prepares a 'destination' URL query parameter for use with drupal_goto().
 - drupal_http_request in includes/
common.inc  - Performs an HTTP request.
 
File
- 
              includes/
common.inc, line 486  
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);
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.