fix uri parsing with fragment

This commit is contained in:
Dennis Eichhorn 2020-05-07 19:30:37 +02:00
parent 2379a8a09f
commit 9bed188175

View File

@ -192,10 +192,17 @@ final class UriFactory
*/ */
private static function unique(string $url) : string private static function unique(string $url) : string
{ {
$parts = \explode('&', \str_replace('?', '&', $url)); $parts = \explode('&', \str_replace('?', '&', $url));
$query = ''; $query = '';
$partCount = \count($parts);
$fragment = '';
if (\count($parts) > 1) { if (($fragStart = \strripos($parts[$partCount - 1], '#')) !== false) {
$fragment = \substr($parts[$partCount - 1], $fragStart);
$parts[$partCount - 1] = \substr($parts[$partCount - 1], 0, $fragStart);
}
if ($partCount > 1) {
$pars = \array_slice($parts, 1); $pars = \array_slice($parts, 1);
$length = \count($pars); $length = \count($pars);
$url = $parts[0]; $url = $parts[0];
@ -214,7 +221,7 @@ final class UriFactory
} }
} }
return $url . (!empty($query) ? '?' . \rtrim($query, '&') : ''); return $url . (!empty($query) ? '?' . \rtrim($query, '&') : '') . $fragment;
} }
/** /**