parse_url
Parse a URL and return its components
Description
mixed parse_url
( string $url
[, int $component
= -1
] )
This function is not meant to validate
the given URL, it only breaks it up into the above listed parts. Partial
URLs are also accepted, parse_url tries its best to
parse them correctly.
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 integer).
Return Values
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 #
If the component
parameter is specified,
parse_url returns a string (or an
integer, 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.
Examples
Example #1 A parse_url example
<?php
$url = 'http://username:password@hostname/path?arg=value#anchor';
print_r(parse_url($url));
echo parse_url($url, PHP_URL_PATH);
?>
The above example will output:
Array
(
[scheme] => http
[host] => hostname
[user] => username
[pass] => password
[path] => /path
[query] => arg=value
[fragment] => anchor
)
/path
Example #2 A parse_url example with missing scheme
<?php
$url = '//www.example.com/path?googleguy=googley';
// Prior to 5.4.7 this would show the path as "//www.example.com/path"
var_dump(parse_url($url));
?>
The above example will output:
array(3) {
["host"]=>
string(15) "www.example.com"
["path"]=>
string(5) "/path"
["query"]=>
string(17) "googleguy=googley"
}
Notes
Note:
This function doesn't work with relative URLs.
Note:
This function is intended specifically for the purpose of parsing URLs
and not URIs. However, to comply with PHP's backwards compatibility
requirements it makes an exception for the file:// scheme where triple
slashes (file:///...) are allowed. For any other scheme this is invalid.
See Also
- pathinfo
- parse_str
- http_build_query
- http_build_url
- dirname
- basename
- » RFC 3986