wp_parse_url( string $url, int $component = -1 )

A wrapper for PHP’s parse_url() function that handles consistency in the return values across PHP versions.


Description 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 Parameters

$url

(string) (Required) The URL to parse.

$component

(int) (Optional) 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 <a href="http://php.net/manual/en/function.parse-url.php">http://php.net/manual/en/function.parse-url.php</a>

Default value: -1


Top ↑

Return Return

(mixed) False on parse failure; Array of URL components on success; When a specific component has been requested: null if the component doesn't exist in the given URL; a string or - in the case of PHP_URL_PORT - integer when it does. See parse_url()'s return values.


Top ↑

Source Source

File: 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 );
}

Top ↑

Changelog Changelog

Changelog
Version Description
4.7.0 The $component parameter was added for parity with PHP's parse_url().
4.4.0 Introduced.


Top ↑

User Contributed Notes User Contributed Notes

  1. Skip to note content
    Contributed by hearvox

    Example return array

    // Get array of URL 'scheme', 'host', and 'path'.
    $url_parse = wp_parse_url( 'https://developer.wordpress.org/reference/functions/wp_parse_url/' );
    
    // Output URL's path.
    echo $url_parse['path'];
    
    /*
    Array
    (
        [scheme] => https
        [host] => developer.wordpress.org
        [path] => /reference/functions/wp_parse_url/
    )
    */
    

You must log in before being able to contribute a note or feedback.