wp_parse_url()
Parses a URL and returns its components. A wrapper for PHP's parse_url() function that handles consistency in the return values across PHP versions.
What the function does:
-
PHP 5.4.7 expanded parse_url()'s ability to handle non-absolute url's, including schemeless and relative url's with
://
in the path. This function works around those limitations providing a standard output on PHP 5.2~5.4+. -
Secondly, across various PHP versions, schemeless URLs starting containing a
:
in the query are being handled inconsistently. This function works around those differences as well. - Error suppression is used as prior to PHP 5.3.3, an E_WARNING would be generated when URL parsing failed.
Since 4.7.0 The $component parameter was added for parity with PHP's parse_url()
No Hooks.
Return
Mixed
.
If the component is not specified:
array
of URL components — on success.false
— on parse failure.
If the component is specified:
string/integer
— the value of the component (an integer is returned forPHP_URL_PORT
).null
— the component doesn't exist in the given URL.
See parse_url()'s return values.
Usage
wp_parse_url( $url, $component );
- $url(string) (required)
- The URL to parse.
- $component(int)
The specific component to retrieve. Use one of the PHP predefined constants to specify which one:
PHP_URL_SCHEME PHP_URL_HOST PHP_URL_PORT PHP_URL_USER PHP_URL_PASS PHP_URL_PATH PHP_URL_QUERY PHP_URL_FRAGMENT
Default: -1 (= return all parts as an array)
Examples
#1 Basic example
$url = 'https://domain.com/path?arg=value#anchor'; $parts = wp_parse_url( $url ); /* $parts = Array ( [scheme] => https [host] => domain.com [path] => /path [query] => arg=value [fragment] => anchor ) */ echo wp_parse_url( $url, PHP_URL_SCHEME ); // https echo wp_parse_url( $url, PHP_URL_HOST ); // domain.com echo wp_parse_url( $url, PHP_URL_PATH ); // /path echo wp_parse_url( $url, PHP_URL_QUERY ); // arg=value echo wp_parse_url( $url, PHP_URL_FRAGMENT ); // anchor
Retrieve all possible components:
$url = 'http://username:[email protected]:9090/path?arg=value#anchor'; $parts = wp_parse_url( $url ); /* $parts = Array ( [scheme] => http [host] => hostname [port] => 9090 [user] => username [pass] => password [path] => /path [query] => arg=value [fragment] => anchor ) */ echo wp_parse_url( $url, PHP_URL_SCHEME ); // http echo wp_parse_url( $url, PHP_URL_HOST ); // hostname echo wp_parse_url( $url, PHP_URL_PORT ); // 9090 echo wp_parse_url( $url, PHP_URL_USER ); // username echo wp_parse_url( $url, PHP_URL_PASS ); // password echo wp_parse_url( $url, PHP_URL_PATH ); // /path echo wp_parse_url( $url, PHP_URL_QUERY ); // arg=value echo wp_parse_url( $url, PHP_URL_FRAGMENT ); // anchor
#2 Parse a URL without a scheme
$url = '//www.example.com/path?googleguy=googley'; $url_parts = wp_parse_url( $url ); /* $url_parts = Array ( [host] => www.example.com [path] => /path [query] => googleguy=googley ) */
Changelog
Since 4.4.0 | Introduced. |
Since 4.7.0 | The $component parameter was added for parity with PHP's parse_url(). |