parse_url()

parse_url() — Parse a URL and return its components.

Built-in function of PHP 8.5. The manual lists it as available in PHP 4, PHP 5, PHP 7, PHP 8. This page is the reference card: signature, parameters and return value, plus the changelog and the example the manual provides.

What it does

This function parses a URL and returns an associative array containing any of the various components of the URL that are present. The values of the array elements are not URL decoded.

Signature

parse_url(string $url, int $component = -1): int|string|array|null|false

Parameters

ParameterTypeWhat it takes
$urlstringThe URL to parse.

Return value

On seriously malformed URLs, parse_url() may return false. If the component parameter is omitted, an associative array is returned. At least one element will be present within the array. Potential keys within this array are: scheme - e.g. http host port user pass path query - after the question mark ? fragment - after the hashmark # scheme - e.g. http host port user pass path query - after the question mark ? fragment - after the hashmark # If the component parameter is specified, parse_url() returns a string (or an int, in the case of PHP_URL_PORT) instead of an array. If the requested component doesn't exist within the given URL, null will be returned. As of PHP 8.0.0, parse_url() ...

Example

A runnable snippet:

$url = 'http://username:password@hostname:9090/path?arg=value#anchor'; var_dump(parse_url($url)); var_dump(parse_url($url, PHP_URL_SCHEME)); var_dump(parse_url($url, PHP_URL_USER)); var_dump(parse_url($url, PHP_URL_PASS)); var_dump(parse_url($url, PHP_URL_HOST)); var_dump(parse_url($url, PHP_URL_PORT)); var_dump(parse_url($url, PHP_URL_PATH)); var_dump(parse_url($url, PHP_URL_QUERY)); var_dump(parse_url($url, PHP_URL_FRAGMENT));

Output:

array(8) { ["scheme"]=> string(4) "http" ["host"]=> string(8) "hostname" ["port"]=> int(9090) ["user"]=> string(8) "username" ["pass"]=> string(8) "password" ["path"]=> string(5) "/path" ["query"]=> string(9) "arg=value" ["fragment"]=> string(6) "anchor" } string(4) "http" string(8) "username" string(8) "password" string(8) "hostname" int(9090) string(5) "/path" string(9) "arg=value" string(6) "anchor"

Changelog

VersionChange
8.0.0parse_url() will now distinguish absent and empty queries and fragments.

See also

pathinfo(), parse_str(), http_build_query(), dirname(), basename()

All PHP 8.5 built-in functions

Reference card built from the PHP manual page parse_url() (PHP documentation, CC BY 3.0). The page is generated from the manual, so the wording of the parameter and return value text follows php.net.