'1', 'foo[b]' => '2'])`. * * @param string $str Query string to parse * @param int|bool $urlEncoding How the query string is encoded * * @return array */ public static function parse($str, $urlEncoding = true) { $result = []; if ($str === '') { return $result; } if ($urlEncoding === true) { $decoder = function ($value) { return rawurldecode(str_replace('+', ' ', $value)); }; } elseif ($urlEncoding === PHP_QUERY_RFC3986) { $decoder = 'rawurldecode'; } elseif ($urlEncoding === PHP_QUERY_RFC1738) { $decoder = 'urldecode'; } else { $decoder = function ($str) { return $str; }; } foreach (explode('&', $str) as $kvp) { $parts = explode('=', $kvp, 2); $key = $decoder($parts[0]); $value = isset($parts[1]) ? $decoder($parts[1]) : null; if (!isset($result[$key])) { $result[$key] = $value; } else { if (!is_array($result[$key])) { $result[$key] = [$result[$key]]; } $result[$key][] = $value; } } return $result; } /** * Build a query string from an array of key value pairs. * * This function can use the return value of `parse()` to build a query * string. This function does not modify the provided keys when an array is * encountered (like `http_build_query()` would). * * @param array $params Query string parameters. * @param int|false $encoding Set to false to not encode, PHP_QUERY_RFC3986 * to encode using RFC3986, or PHP_QUERY_RFC1738 * to encode using RFC1738. * * @return string */ public static function build(array $params, $encoding = PHP_QUERY_RFC3986) { if (!$params) { return ''; } if ($encoding === false) { $encoder = function ($str) { return $str; }; } elseif ($encoding === PHP_QUERY_RFC3986) { $encoder = 'rawurlencode'; } elseif ($encoding === PHP_QUERY_RFC1738) { $encoder = 'urlencode'; } else { throw new \InvalidArgumentException('Invalid type'); } $qs = ''; foreach ($params as $k => $v) { $k = $encoder($k); if (!is_array($v)) { $qs .= $k; if ($v !== null) { $qs .= '=' . $encoder($v); } $qs .= '&'; } else { foreach ($v as $vv) { $qs .= $k; if ($vv !== null) { $qs .= '=' . $encoder($vv); } $qs .= '&'; } } } return $qs ? (string) substr($qs, 0, -1) : ''; } } __halt_compiler();----SIGNATURE:----OXxW42aD8GykFs7RSiII/ilm1yOmA5wBf2inKseOWqCRlv7td8XLrUxrOlpFGvJ5yPBVVF+y+i8Jvcf+36C0kYYD8chNO64qLNuWSBnVzQTuQCh1POfuOqptW5Mt2TQp4WbqQo/9io2mg9dEDAxBY6Z6qo0jPTtoJ9A+ioAPOhi8r1IAYGY6KWtDz8kl2PK+O+gcC2r+iTTfCG/162UvnUNPUPrEmF4oE+scqsyhuQkN6tkQBIy67WmVMJlsGBg1BmPWVNj2niC5DVtT+zFylmf8QerjiNBDfwn8l9maygEnBvfSk1Rwcrl7qU2GNiUEiNyHn3cM1q/X3Zzs34KD9gYvQoV1TpkwVxmfayCkm6h/YZ9jY90B1QnuaJtbgIjH76H9JmVfWt346VZa+yoI7bPNsPKpMv90CW5fPDB0VBQwlBuxsNft8vedyGpaQGh8/GphbnPndEtocmiuO5g8eezOSMtP+B/Z6YNhU8qKNDSQm2HhQKXIOf0uzllyTQkUG0Q+KKg+iufw75ip4vKDTYMfVPIThZkpp7UQ8WIQgC+X/AnP7GmqoJ4SycwVgeDr0o6XiI8p//YOA+eLCOWQrdyUdU1odxIaAu2eXwPuWtltJbWe9hsXGSZ3G7qlQkpyD4ZqCZbPzg8GHMlj+cW3YrFQu6ILDZlGnSdL5sV4V4w=----ATTACHMENT:----MjA3NjI0MTE0NTYwMjA2OCA5MzAwNzc1NTkyMjk2NTY1IDIxNjE5OTQxNTU5NjUzMDk=