protected function parseRequestURI(): string
	{
		if (! isset($_SERVER['REQUEST_URI'], $_SERVER['SCRIPT_NAME']))
		{
			return '';
		}

		// parse_url() returns false if no host is present, but the path or query string
		// contains a colon followed by a number
		$parts = parse_url('http://dummy' . $_SERVER['REQUEST_URI']);
		$query = $parts['query'] ?? '';
		$uri   = $parts['path'] ?? '';

		if (isset($_SERVER['SCRIPT_NAME'][0]))
		{
			// strip the script name from the beginning of the URI
			if (strpos($uri, $_SERVER['SCRIPT_NAME']) === 0)
			{
				$uri = (string) substr($uri, strlen($_SERVER['SCRIPT_NAME']));
			}
			// if the script is nested, strip the parent folder & script from the URI
			elseif (strpos($uri, $_SERVER['SCRIPT_NAME']) > 0)
			{
				$uri = (string) substr($uri, strpos($uri, $_SERVER['SCRIPT_NAME']) + strlen($_SERVER['SCRIPT_NAME']));
			}
			// or if index.php is implied
			elseif (strpos($uri, dirname($_SERVER['SCRIPT_NAME'])) === 0)
			{
				$uri = (string) substr($uri, strlen(dirname($_SERVER['SCRIPT_NAME'])));
			}
		}

		// This section ensures that even on servers that require the URI to contain the query string (Nginx) a correct
		// URI is found, and also fixes the QUERY_STRING getServer var and $_GET array.
		if (trim($uri, '/') === '' && strncmp($query, '/', 1) === 0)
		{
			$query                   = explode('?', $query, 2);
			$uri                     = $query[0];
			$_SERVER['QUERY_STRING'] = $query[1] ?? '';
		}
		else
		{
			$_SERVER['QUERY_STRING'] = $query;
		}

		parse_str($_SERVER['QUERY_STRING'], $_GET);

		if ($uri === '/' || $uri === '')
		{
			return '/';
		}

		return $this->removeRelativeDirectory($uri);
	}
protected function parseRequestURI(): string
	{
		if (! isset($_SERVER['REQUEST_URI'], $_SERVER['SCRIPT_NAME']))
		{
			return '';
		}

		// parse_url() returns false if no host is present, but the path or query string
		// contains a colon followed by a number
		$parts = parse_url('http://dummy' . $_SERVER['REQUEST_URI']);
		$query = $parts['query'] ?? '';
		$uri   = $parts['path'] ?? '';

		if (isset($_SERVER['SCRIPT_NAME'][0]))
		{
			// strip the script name from the beginning of the URI
			if (strpos($uri, $_SERVER['SCRIPT_NAME']) === 0)
			{
				$uri = (string) substr($uri, strlen($_SERVER['SCRIPT_NAME']));
			}
			// if the script is nested, strip the parent folder & script from the URI
			elseif (strpos($uri, $_SERVER['SCRIPT_NAME']) > 0)
			{
				$uri = (string) substr($uri, strpos($uri, $_SERVER['SCRIPT_NAME']) + strlen($_SERVER['SCRIPT_NAME']));
			}
			// or if index.php is implied
			elseif (strpos($uri, dirname($_SERVER['SCRIPT_NAME'])) === 0)
			{
				$uri = (string) substr($uri, strlen(dirname($_SERVER['SCRIPT_NAME'])));
			}
		}

		// This section ensures that even on servers that require the URI to contain the query string (Nginx) a correct
		// URI is found, and also fixes the QUERY_STRING getServer var and $_GET array.
		if (trim($uri, '/') === '' && strncmp($query, '/', 1) === 0)
		{
			$query                   = explode('?', $query, 2);
			$uri                     = $query[0];
			$_SERVER['QUERY_STRING'] = $query[1] ?? '';
		}
		else
		{
			$_SERVER['QUERY_STRING'] = $query;
		}

		parse_str($_SERVER['QUERY_STRING'], $_GET);

		if ($uri === '/' || $uri === '')
		{
			return '/';
		}

		return $this->removeRelativeDirectory($uri);
	}
protected function parseRequestURI ( ) : string { if ( ! isset ( $ _SERVER [ 'REQUEST_URI' ] , $ _SERVER [ 'SCRIPT_NAME' ] ) ) { return '' ; } // parse_url() returns false if no host is present, but the path or query string // contains a colon followed by a number $ parts = parse_url ( 'http://dummy' . $ _SERVER [ 'REQUEST_URI' ] ) ; $ query = $ parts [ 'query' ] ?? '' ; $ uri = $ parts [ 'path' ] ?? '' ; if ( isset ( $ _SERVER [ 'SCRIPT_NAME' ] [ 0 ] ) ) { // strip the script name from the beginning of the URI if ( strpos ( $ uri , $ _SERVER [ 'SCRIPT_NAME' ] ) === 0 ) { $ uri = ( string ) substr ( $ uri , strlen ( $ _SERVER [ 'SCRIPT_NAME' ] ) ) ; } // if the script is nested, strip the parent folder & script from the URI elseif ( strpos ( $ uri , $ _SERVER [ 'SCRIPT_NAME' ] ) > 0 ) { $ uri = ( string ) substr ( $ uri , strpos ( $ uri , $ _SERVER [ 'SCRIPT_NAME' ] ) + strlen ( $ _SERVER [ 'SCRIPT_NAME' ] ) ) ; } // or if index.php is implied elseif ( strpos ( $ uri , dirname ( $ _SERVER [ 'SCRIPT_NAME' ] ) ) === 0 ) { $ uri = ( string ) substr ( $ uri , strlen ( dirname ( $ _SERVER [ 'SCRIPT_NAME' ] ) ) ) ; } } // This section ensures that even on servers that require the URI to contain the query string (Nginx) a correct // URI is found, and also fixes the QUERY_STRING getServer var and $_GET array. if ( trim ( $ uri , '/' ) === '' && strncmp ( $ query , '/' , 1 ) === 0 ) { $ query = explode ( '?' , $ query , 2 ) ; $ uri = $ query [ 0 ] ; $ _SERVER [ 'QUERY_STRING' ] = $ query [ 1 ] ?? '' ; } else { $ _SERVER [ 'QUERY_STRING' ] = $ query ; } parse_str ( $ _SERVER [ 'QUERY_STRING' ] , $ _GET ) ; if ( $ uri === '/' || $ uri === '' ) { return '/' ; } return $ this -> removeRelativeDirectory ( $ uri ) ; }
Will parse the REQUEST_URI and automatically detect the URI from it,
fixing the query string if necessary.

@return string The URI it found.
Will parse the REQUEST_URI and automatically detect the URI from it fixing the query string if necessary .