| 7 common.inc | drupal_http_build_query(array $query, $parent = '') |
| 8 common.inc | drupal_http_build_query(array $query, $parent = '') |
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
8 calls to drupal_http_build_query()
File
- includes/
common.inc, line 477 - 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);
}
// If a query parameter value is NULL, only append its 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);
}
Login or register to post comments
Comments
in D7 url() requires the raw query strings in an array.
If you are upgrading from D6 to D7 and used drupal_query_string_encode() in D6 to create encoded strings to populate the url() 'query' array, mind that in D7 the url() function calls drupal_http_build_query() to encode raw query array's.
So in D7 you don't have to encode your query strings with drupal_http_build_query() manually before adding them to url() .
This also counts for the l() function as it calls url().