mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-03-31 18:54:29 +00:00
WP_HTTP: Promote the WP_HTTP::parse_url() method to a more generic wp_parse_url() function.
Fixes #34408 git-svn-id: https://develop.svn.wordpress.org/trunk@35369 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
@@ -688,45 +688,16 @@ class WP_Http {
|
||||
/**
|
||||
* A wrapper for PHP's parse_url() function that handles edgecases in < PHP 5.4.7
|
||||
*
|
||||
* 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 works around those
|
||||
* limitations providing a standard output on PHP 5.2~5.4+.
|
||||
*
|
||||
* Error suppression is used as prior to PHP 5.3.3, an E_WARNING would be generated
|
||||
* when URL parsing failed.
|
||||
*
|
||||
* @since 4.1.0
|
||||
*
|
||||
* @static
|
||||
* @access protected
|
||||
* @deprecated 4.4.0 See wp_parse_url()
|
||||
*
|
||||
* @param string $url The URL to parse.
|
||||
* @return bool|array False on failure; Array of URL components on success;
|
||||
* See parse_url()'s return values.
|
||||
*/
|
||||
protected static function parse_url( $url ) {
|
||||
$parts = @parse_url( $url );
|
||||
if ( ! $parts ) {
|
||||
// < PHP 5.4.7 compat, trouble with relative paths including a scheme break in the path
|
||||
if ( '/' == $url[0] && false !== strpos( $url, '://' ) ) {
|
||||
// Since we know it's a relative path, prefix with a scheme/host placeholder and try again
|
||||
if ( ! $parts = @parse_url( 'placeholder://placeholder' . $url ) ) {
|
||||
return $parts;
|
||||
}
|
||||
// Remove the placeholder values
|
||||
unset( $parts['scheme'], $parts['host'] );
|
||||
} else {
|
||||
return $parts;
|
||||
}
|
||||
}
|
||||
|
||||
// < PHP 5.4.7 compat, doesn't detect schemeless URL's host field
|
||||
if ( '//' == substr( $url, 0, 2 ) && ! isset( $parts['host'] ) ) {
|
||||
list( $parts['host'], $slashless_path ) = explode( '/', substr( $parts['path'], 2 ), 2 );
|
||||
$parts['path'] = "/{$slashless_path}";
|
||||
}
|
||||
|
||||
return $parts;
|
||||
_deprecated_function( __METHOD__, '4.4.0', 'wp_parse_url()' );
|
||||
return wp_parse_url( $url );
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -747,11 +718,11 @@ class WP_Http {
|
||||
if ( empty( $url ) )
|
||||
return $maybe_relative_path;
|
||||
|
||||
if ( ! $url_parts = WP_Http::parse_url( $url ) ) {
|
||||
if ( ! $url_parts = wp_parse_url( $url ) ) {
|
||||
return $maybe_relative_path;
|
||||
}
|
||||
|
||||
if ( ! $relative_url_parts = WP_Http::parse_url( $maybe_relative_path ) ) {
|
||||
if ( ! $relative_url_parts = wp_parse_url( $maybe_relative_path ) ) {
|
||||
return $maybe_relative_path;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user