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

You appear to be a bot. Output may be restricted

Description

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

PHP 5.4.7 expanded parse_url()'s ability to handle non-absolute URLs, including schemeless and relative URLs 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 containing a ":" in the query are being handled inconsistently. This function works around those differences as well.

Usage

$mixed = wp_parse_url( $url, $component );

Parameters

$url
( string ) required – The URL to parse.
$component
( int ) optional default: -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).

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.

Source

File name: wordpress/wp-includes/http.php
Lines:

1 to 27 of 27
function wp_parse_url( $url, $component = -1 ) {
  $to_unset = array();
  $url      = (string) $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 );
}
 

 View on GitHub View on Trac