<?php
function wp_parse_url( $url ) {
// TODO; Move to wp_parse_url() ?
// Prefix with a temporary placeholder scheme for scheme-less URL's to work around PHP Bugs
if ( preg_match( '~^//~', $url ) ) {
$url = "wp-placeholder:$url";
}
if ( preg_match( '~^/[^/]~', $url ) ) {
$url = "wp-placeholder://wp-placeholder$url";
}
if ( preg_match( '~^[^/]+://.+@[^/]+$~', $url ) ) {
$url .= '/';
}
$parts = @parse_url( $url );
if ( $parts ) { $parts['url'] = $url; }
foreach ( array( 'scheme', 'host' ) as $component ) {
if ( isset( $parts[ $component ] ) && 'wp-placeholder' === $parts[ $component ] ) {
unset( $parts[ $component ] );
}
}
return $parts;
}
var_export(wp_parse_url( '//some-host.com/?url=http://whatever/' ));
- Output for 4.3.0 - 4.3.11, 4.4.1 - 4.4.9, 5.0.0 - 5.0.5, 5.1.0 - 5.1.6, 5.2.0 - 5.2.17, 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.24 - 5.5.35, 5.6.8 - 5.6.28, 7.0.0 - 7.0.20, 7.1.0 - 7.1.20, 7.2.0 - 7.2.33, 7.3.16 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
- array (
'host' => 'some-host.com',
'path' => '/',
'query' => 'url=http://whatever/',
'url' => 'wp-placeholder://some-host.com/?url=http://whatever/',
)
- Output for 4.4.0
- array (
'path' => '//some-host.com/',
'query' => 'url=http://whatever/',
'url' => 'wp-placeholder://some-host.com/?url=http://whatever/',
)
preferences:
227.32 ms | 401 KiB | 312 Q