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
| Parameter | Type | What it takes |
|---|---|---|
| $url | string | The 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
| Version | Change |
|---|---|
| 8.0.0 | parse_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.