wp_parse_url
A wrapper for PHP's parse_url() function that handles consistency in the return values across PHP versions.
Description
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.
Parameters (2)
- 0. $url (string)
- The URL to parse.
- 1. $component — Optional. (int) =>
-1
- The specific component to retrieve. Use one of the PHP predefined constants to specify which one. Defaults to -1 (= return all parts as an array). @see http://php.net/manual/en/function.parse-url.php
Usage
if ( !function_exists( 'wp_parse_url' ) ) { require_once ABSPATH . WPINC . '/http.php'; } // The URL to parse. $url = ''; $component = -1; // NOTICE! Understand what this does before running. $result = wp_parse_url($url, $component);
Defined (1)
The function is defined in the following location(s).
- /wp-includes/http.php
- function wp_parse_url( $url, $component = -1 ) {
- $to_unset = array();
- $url = strval( $url );
- if ( '//' === substr( $url, 0, 2 ) ) {
- $to_unset[] = 'scheme';
- $url = 'placeholder:' . $url;
- } elseif ( '/' === substr( $url, 0, 1 ) ) {
- $to_unset[] = 'scheme';
- $to_unset[] = 'host';
- $url = 'placeholder://placeholder' . $url;
- }
- $parts = @parse_url( $url );
- if ( false === $parts ) {
- // Parsing failure.
- return $parts;
- }
- // Remove the placeholder values.
- foreach ( $to_unset as $key ) {
- unset( $parts[ $key ] );
- }
- return _get_component_from_parsed_url_array( $parts, $component );
- }