public static UrlHelper::buildQuery(array $query, $parent = '')
Parses an array into a valid, rawurlencoded query string.
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.
@todo Remove this function once PHP 5.4 is required as we can use just http_build_query() directly.
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
- PHP wrapper functions
- Functions that are wrappers or custom implementations of PHP functions.
File
- core/lib/Drupal/Component/Utility/UrlHelper.php, line 45
Class
- UrlHelper
- Helper class URL based methods.
Namespace
Drupal\Component\Utility
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | public static function buildQuery( 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 [] = static ::buildQuery( $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 ); } |
Please login to continue.