parse_url
Description
Syntax
parse_url( string $url, int $component = -1 ): int|string|array|null|false
Parameters
url
The URL to parse. Invalid characters are replaced by _.
component
Specify one of PHP_URL_SCHEME, PHP_URL_HOST, PHP_URL_PORT, PHP_URL_USER, PHP_URL_PASS, PHP_URL_PATH, PHP_URL_QUERY or PHP_URL_FRAGMENT to retrieve just a specific URL component as a string (except when PHP_URL_PORT is given, in which case the return value will be an int).
Return
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.
Keys | Description |
---|---|
scheme | |
host | |
port | |
user | |
pass | |
path | |
query | after the question mark (?) |
fragment | after the hashtag (#) |
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() distinguishes absent and empty queries and fragments:
http://example.com/foo → query = null, fragment = null http://example.com/foo? → query = "", fragment = null http://example.com/foo# → query = null, fragment = "" http://example.com/foo?# → query = "", fragment = ""
Previously all cases resulted in query and fragment being null.
Examples
1 · url
<? $url = 'https://username:password@hostname:9090/path?arg=value#anchor'; $return = parse_url($url); print_r($return);
Array ( [scheme] => https [host] => hostname [port] => 9090 [user] => username [pass] => password [path] => /path [query] => arg=value [fragment] => anchor )
2 · component · PHP_URL_SCHEME
<? $url = 'https://username:password@hostname:9090/path?arg=value#anchor'; $component = PHP_URL_SCHEME; $return = parse_url($url, $component); echo $return;
https
3 · component · PHP_URL_HOST
<? $url = 'https://username:password@hostname:9090/path?arg=value#anchor'; $component = PHP_URL_HOST; $return = parse_url($url, $component); echo $return;
hostname
4 · component · PHP_URL_PORT
<? $url = 'https://username:password@hostname:9090/path?arg=value#anchor'; $component = PHP_URL_PORT; $return = parse_url($url, $component); echo $return;
9090
5 · component · PHP_URL_USER
<? $url = 'https://username:password@hostname:9090/path?arg=value#anchor'; $component = PHP_URL_USER; $return = parse_url($url, $component); echo $return;
username
6 · component · PHP_URL_PASS
<? $url = 'https://username:password@hostname:9090/path?arg=value#anchor'; $component = PHP_URL_PASS; $return = parse_url($url, $component); echo $return;
password
7 · component · PHP_URL_PATH
<? $url = 'https://username:password@hostname:9090/path?arg=value#anchor'; $component = PHP_URL_PATH; $return = parse_url($url, $component); echo $return;
/path
8 · component · PHP_URL_QUERY
<? $url = 'https://username:password@hostname:9090/path?arg=value#anchor'; $component = PHP_URL_QUERY; $return = parse_url($url, $component); echo $return;
arg=value
9 · component · PHP_URL_FRAGMENT
<? $url = 'https://username:password@hostname:9090/path?arg=value#anchor'; $component = PHP_URL_FRAGMENT; $return = parse_url($url, $component); echo $return;
anchor