wpseek.com
A WordPress-centric search engine for devs and theme authors



wp_parse_url › WordPress Function

Since4.4.0
Deprecatedn/a
wp_parse_url ( $url, $component = -1 )
Parameters: (2)
  • (string) $url The URL to parse.
    Required: Yes
  • (int) $component 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).
    Required: No
    Default: -1
Links:
Returns:
  • (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.
Defined at:
Codex:
Change Log:
  • 4.7.0

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

Across various PHP versions, schemeless URLs containing a ":" in the query are being handled inconsistently. This function works around those differences.


Source

function wp_parse_url( $url, $component = -1 ) {
	$to_unset = array();
	$url      = (string) $url;

	if ( str_starts_with( $url, '//' ) ) {
		$to_unset[] = 'scheme';
		$url        = 'placeholder:' . $url;
	} elseif ( str_starts_with( $url, '/' ) ) {
		$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 );
}