diff --git a/Uri/UriFactory.php b/Uri/UriFactory.php index 0169470ca..7dae96369 100644 --- a/Uri/UriFactory.php +++ b/Uri/UriFactory.php @@ -216,6 +216,12 @@ final class UriFactory } \parse_str($urlStructure['query'], $urlStructure['query']); + + foreach ($urlStructure['query'] as $para => $query) { + if ($query === '' && \stripos($url, $para . '=') !== false) { + unset($urlStructure['query'][$para]); + } + } } $escaped = @@ -268,10 +274,14 @@ final class UriFactory return $uri; } + if (\stripos($uri, '{?u')) { + $a = 1; + } + $parsed = \preg_replace_callback('(\{[\/#\?%@\.\$][a-zA-Z0-9\-]*\})', function ($match) use ($toMatch) { $match = \substr($match[0], 1, \strlen($match[0]) - 2); - return $toMatch[$match] ?? self::$uri[$match] ?? $match; + return $toMatch[$match] ?? self::$uri[$match] ?? ''; }, $uri); return self::unique($parsed ?? '');