diff --git a/pkg/dsn/Dsn.php b/pkg/dsn/Dsn.php index a5cc139b2..d01ad1961 100644 --- a/pkg/dsn/Dsn.php +++ b/pkg/dsn/Dsn.php @@ -215,23 +215,14 @@ public static function parse(string $dsn): array unset($schemeParts[0]); $schemeExtensions = array_values($schemeParts); - $user = parse_url($dsn, PHP_URL_USER) ?: null; - if (is_string($user)) { - $user = rawurldecode($user); - } - - $password = parse_url($dsn, PHP_URL_PASS) ?: null; - if (is_string($password)) { - $password = rawurldecode($password); - } + $parsedDsn = parse_url($dsn); - $path = parse_url($dsn, PHP_URL_PATH) ?: null; - if ($path) { - $path = rawurldecode($path); - } + $user = isset($parsedDsn['user']) ? rawurldecode($parsedDsn['user']) : null; + $password = isset($parsedDsn['pass']) ? rawurldecode($parsedDsn['pass']) : null; + $path = isset($parsedDsn['path']) ? rawurldecode($parsedDsn['path']) : null; $query = []; - $queryString = parse_url($dsn, PHP_URL_QUERY) ?: null; + $queryString = $parsedDsn['query'] ?? null; if (is_string($queryString)) { $query = self::httpParseQuery($queryString, '&', PHP_QUERY_RFC3986); }