H69UNtblNBNpha2dtB1Odn8qYp1Qk5NK2gi7yfceofo9N
e:
/
home
/
ajudasindico
/
Web
/
16dezoito
/
weecook
/
wp-includes
/
Nama File / Folder
Size
Action
ID3
--
NONE
SimplePie
--
NONE
Text
--
NONE
certificates
--
NONE
css
--
NONE
customize
--
NONE
fonts
--
NONE
images
--
NONE
js
--
NONE
pomo
--
NONE
random_compat
--
NONE
rest-api
--
NONE
theme-compat
--
NONE
widgets
--
NONE
admin-bar.php
24.922KB
Hapus
Edit
Rename
atomlib.php
10.854KB
Hapus
Edit
Rename
author-template.php
14.731KB
Hapus
Edit
Rename
bookmark-template.php
11.423KB
Hapus
Edit
Rename
cache.php
21.59KB
Hapus
Edit
Rename
canonical.php
25.82KB
Hapus
Edit
Rename
capabilities.php
18.064KB
Hapus
Edit
Rename
category.php
10.988KB
Hapus
Edit
Rename
class-IXR.php
34.325KB
Hapus
Edit
Rename
class-feed.php
3.991KB
Hapus
Edit
Rename
class-http.php
29.679KB
Hapus
Edit
Rename
class-json.php
39.527KB
Hapus
Edit
Rename
class-oembed.php
24.195KB
Hapus
Edit
Rename
class-phpmailer.php
133.401KB
Hapus
Edit
Rename
class-pop3.php
20.43KB
Hapus
Edit
Rename
class-simplepie.php
88.345KB
Hapus
Edit
Rename
class-smtp.php
36.47KB
Hapus
Edit
Rename
class-snoopy.php
36.883KB
Hapus
Edit
Rename
class-walker-category-dropdown.php
1.896KB
Hapus
Edit
Rename
class-walker-category.php
5.993KB
Hapus
Edit
Rename
class-walker-comment.php
10.267KB
Hapus
Edit
Rename
class-walker-page-dropdown.php
1.954KB
Hapus
Edit
Rename
class-walker-page.php
4.301KB
Hapus
Edit
Rename
class-wp-admin-bar.php
15.674KB
Hapus
Edit
Rename
class-wp-ajax-response.php
3.92KB
Hapus
Edit
Rename
class-wp-comment-query.php
37.781KB
Hapus
Edit
Rename
class-wp-comment.php
9.133KB
Hapus
Edit
Rename
class-wp-customize-control.php
16.026KB
Hapus
Edit
Rename
class-wp-customize-nav-menus.php
34.844KB
Hapus
Edit
Rename
class-wp-customize-panel.php
9.379KB
Hapus
Edit
Rename
class-wp-customize-widgets.php
50.8KB
Hapus
Edit
Rename
class-wp-embed.php
11.58KB
Hapus
Edit
Rename
class-wp-error.php
4.903KB
Hapus
Edit
Rename
class-wp-http-cookie.php
5.966KB
Hapus
Edit
Rename
class-wp-http-curl.php
11.1KB
Hapus
Edit
Rename
class-wp-http-encoding.php
6.284KB
Hapus
Edit
Rename
class-wp-http-ixr-client.php
3.173KB
Hapus
Edit
Rename
class-wp-http-proxy.php
5.816KB
Hapus
Edit
Rename
class-wp-http-response.php
3.021KB
Hapus
Edit
Rename
class-wp-http-streams.php
14.506KB
Hapus
Edit
Rename
class-wp-image-editor-gd.php
13.227KB
Hapus
Edit
Rename
class-wp-image-editor-imagick.php
13.79KB
Hapus
Edit
Rename
class-wp-network.php
8.799KB
Hapus
Edit
Rename
class-wp-oembed-controller.php
1.999KB
Hapus
Edit
Rename
class-wp-post.php
5.73KB
Hapus
Edit
Rename
class-wp-rewrite.php
57.403KB
Hapus
Edit
Rename
class-wp-role.php
2.646KB
Hapus
Edit
Rename
class-wp-roles.php
6.806KB
Hapus
Edit
Rename
class-wp-tax-query.php
19.104KB
Hapus
Edit
Rename
class-wp-term.php
5.244KB
Hapus
Edit
Rename
class-wp-theme.php
40.66KB
Hapus
Edit
Rename
class-wp-user-query.php
25.596KB
Hapus
Edit
Rename
class-wp-user.php
19.055KB
Hapus
Edit
Rename
class-wp-widget.php
16.311KB
Hapus
Edit
Rename
class-wp-xmlrpc-server.php
191.971KB
Hapus
Edit
Rename
class-wp.php
23.849KB
Hapus
Edit
Rename
class.wp-scripts.php
8.311KB
Hapus
Edit
Rename
comment-template.php
82.106KB
Hapus
Edit
Rename
compat.php
9.951KB
Hapus
Edit
Rename
cron.php
14.634KB
Hapus
Edit
Rename
date.php
34.428KB
Hapus
Edit
Rename
default-constants.php
9.001KB
Hapus
Edit
Rename
default-filters.php
22.876KB
Hapus
Edit
Rename
default-widgets.php
1.469KB
Hapus
Edit
Rename
deprecated.php
101.457KB
Hapus
Edit
Rename
embed-template.php
5.29KB
Hapus
Edit
Rename
embed.php
41.845KB
Hapus
Edit
Rename
feed-atom.php
2.96KB
Hapus
Edit
Rename
feed-rdf.php
2.557KB
Hapus
Edit
Rename
feed-rss2-comments.php
3.57KB
Hapus
Edit
Rename
feed-rss2.php
3.656KB
Hapus
Edit
Rename
feed.php
18.4KB
Hapus
Edit
Rename
formatting.php
154.602KB
Hapus
Edit
Rename
functions.wp-scripts.php
9.53KB
Hapus
Edit
Rename
general-template.php
111.549KB
Hapus
Edit
Rename
http.php
19.004KB
Hapus
Edit
Rename
kses.php
48.729KB
Hapus
Edit
Rename
l10n.php
34.524KB
Hapus
Edit
Rename
link-template.php
122.47KB
Hapus
Edit
Rename
load.php
25.574KB
Hapus
Edit
Rename
locale.php
13.807KB
Hapus
Edit
Rename
media-template.php
44.432KB
Hapus
Edit
Rename
media.php
128.258KB
Hapus
Edit
Rename
meta.php
29.063KB
Hapus
Edit
Rename
ms-blogs.php
26.75KB
Hapus
Edit
Rename
ms-default-constants.php
4.45KB
Hapus
Edit
Rename
ms-default-filters.php
4.364KB
Hapus
Edit
Rename
ms-deprecated.php
11.065KB
Hapus
Edit
Rename
ms-files.php
2.55KB
Hapus
Edit
Rename
ms-functions.php
77.968KB
Hapus
Edit
Rename
ms-load.php
11.669KB
Hapus
Edit
Rename
ms-settings.php
8.696KB
Hapus
Edit
Rename
nav-menu-template.php
25.636KB
Hapus
Edit
Rename
nav-menu.php
31.302KB
Hapus
Edit
Rename
option.php
51.033KB
Hapus
Edit
Rename
pluggable.php
82.674KB
Hapus
Edit
Rename
plugin.php
31.678KB
Hapus
Edit
Rename
post-formats.php
6.788KB
Hapus
Edit
Rename
post-template.php
53.575KB
Hapus
Edit
Rename
post-thumbnail-template.php
6.987KB
Hapus
Edit
Rename
post.php
193.762KB
Hapus
Edit
Rename
query.php
142.427KB
Hapus
Edit
Rename
registration-functions.php
0.172KB
Hapus
Edit
Rename
rest-api.php
17.447KB
Hapus
Edit
Rename
revision.php
18.943KB
Hapus
Edit
Rename
rewrite.php
15.734KB
Hapus
Edit
Rename
rss-functions.php
0.185KB
Hapus
Edit
Rename
rss.php
22.759KB
Hapus
Edit
Rename
script-loader.php
53.482KB
Hapus
Edit
Rename
session.php
9.996KB
Hapus
Edit
Rename
shortcodes.php
18.714KB
Hapus
Edit
Rename
taxonomy.php
158.891KB
Hapus
Edit
Rename
template-loader.php
3.063KB
Hapus
Edit
Rename
template.php
15.233KB
Hapus
Edit
Rename
theme.php
63.664KB
Hapus
Edit
Rename
update.php
22.509KB
Hapus
Edit
Rename
user.php
76.491KB
Hapus
Edit
Rename
vars.php
5.313KB
Hapus
Edit
Rename
version.php
0.634KB
Hapus
Edit
Rename
wlwmanifest.xml
1.021KB
Hapus
Edit
Rename
wp-db.php
89.835KB
Hapus
Edit
Rename
wp-diff.php
14.701KB
Hapus
Edit
Rename
<?php /** * Core HTTP Request API * * Standardizes the HTTP requests for WordPress. Handles cookies, gzip encoding and decoding, chunk * decoding, if HTTP 1.1 and various other difficult HTTP protocol implementations. * * @package WordPress * @subpackage HTTP */ /** * Returns the initialized WP_Http Object * * @since 2.7.0 * @access private * * @staticvar WP_Http $http * * @return WP_Http HTTP Transport object. */ function _wp_http_get_object() { static $http = null; if ( is_null( $http ) ) { $http = new WP_Http(); } return $http; } /** * Retrieve the raw response from a safe HTTP request. * * This function is ideal when the HTTP request is being made to an arbitrary * URL. The URL is validated to avoid redirection and request forgery attacks. * * @since 3.6.0 * * @see wp_remote_request() For more information on the response array format. * @see WP_Http::request() For default arguments information. * * @param string $url Site URL to retrieve. * @param array $args Optional. Request arguments. Default empty array. * @return WP_Error|array The response or WP_Error on failure. */ function wp_safe_remote_request( $url, $args = array() ) { $args['reject_unsafe_urls'] = true; $http = _wp_http_get_object(); return $http->request( $url, $args ); } /** * Retrieve the raw response from a safe HTTP request using the GET method. * * This function is ideal when the HTTP request is being made to an arbitrary * URL. The URL is validated to avoid redirection and request forgery attacks. * * @since 3.6.0 * * @see wp_remote_request() For more information on the response array format. * @see WP_Http::request() For default arguments information. * * @param string $url Site URL to retrieve. * @param array $args Optional. Request arguments. Default empty array. * @return WP_Error|array The response or WP_Error on failure. */ function wp_safe_remote_get( $url, $args = array() ) { $args['reject_unsafe_urls'] = true; $http = _wp_http_get_object(); return $http->get( $url, $args ); } /** * Retrieve the raw response from a safe HTTP request using the POST method. * * This function is ideal when the HTTP request is being made to an arbitrary * URL. The URL is validated to avoid redirection and request forgery attacks. * * @since 3.6.0 * * @see wp_remote_request() For more information on the response array format. * @see WP_Http::request() For default arguments information. * * @param string $url Site URL to retrieve. * @param array $args Optional. Request arguments. Default empty array. * @return WP_Error|array The response or WP_Error on failure. */ function wp_safe_remote_post( $url, $args = array() ) { $args['reject_unsafe_urls'] = true; $http = _wp_http_get_object(); return $http->post( $url, $args ); } /** * Retrieve the raw response from a safe HTTP request using the HEAD method. * * This function is ideal when the HTTP request is being made to an arbitrary * URL. The URL is validated to avoid redirection and request forgery attacks. * * @since 3.6.0 * * @see wp_remote_request() For more information on the response array format. * @see WP_Http::request() For default arguments information. * * @param string $url Site URL to retrieve. * @param array $args Optional. Request arguments. Default empty array. * @return WP_Error|array The response or WP_Error on failure. */ function wp_safe_remote_head( $url, $args = array() ) { $args['reject_unsafe_urls'] = true; $http = _wp_http_get_object(); return $http->head( $url, $args ); } /** * Retrieve the raw response from the HTTP request. * * The array structure is a little complex: * * $res = array( * 'headers' => array(), * 'response' => array( * 'code' => int, * 'message' => string * ) * ); * * All of the headers in $res['headers'] are with the name as the key and the * value as the value. So to get the User-Agent, you would do the following. * * $user_agent = $res['headers']['user-agent']; * * The body is the raw response content and can be retrieved from $res['body']. * * This function is called first to make the request and there are other API * functions to abstract out the above convoluted setup. * * Request method defaults for helper functions: * - Default 'GET' for wp_remote_get() * - Default 'POST' for wp_remote_post() * - Default 'HEAD' for wp_remote_head() * * @since 2.7.0 * * @see WP_Http::request() For additional information on default arguments. * * @param string $url Site URL to retrieve. * @param array $args Optional. Request arguments. Default empty array. * @return WP_Error|array The response or WP_Error on failure. */ function wp_remote_request($url, $args = array()) { $http = _wp_http_get_object(); return $http->request( $url, $args ); } /** * Retrieve the raw response from the HTTP request using the GET method. * * @since 2.7.0 * * @see wp_remote_request() For more information on the response array format. * @see WP_Http::request() For default arguments information. * * @param string $url Site URL to retrieve. * @param array $args Optional. Request arguments. Default empty array. * @return WP_Error|array The response or WP_Error on failure. */ function wp_remote_get($url, $args = array()) { $http = _wp_http_get_object(); return $http->get( $url, $args ); } /** * Retrieve the raw response from the HTTP request using the POST method. * * @since 2.7.0 * * @see wp_remote_request() For more information on the response array format. * @see WP_Http::request() For default arguments information. * * @param string $url Site URL to retrieve. * @param array $args Optional. Request arguments. Default empty array. * @return WP_Error|array The response or WP_Error on failure. */ function wp_remote_post($url, $args = array()) { $http = _wp_http_get_object(); return $http->post( $url, $args ); } /** * Retrieve the raw response from the HTTP request using the HEAD method. * * @since 2.7.0 * * @see wp_remote_request() For more information on the response array format. * @see WP_Http::request() For default arguments information. * * @param string $url Site URL to retrieve. * @param array $args Optional. Request arguments. Default empty array. * @return WP_Error|array The response or WP_Error on failure. */ function wp_remote_head($url, $args = array()) { $http = _wp_http_get_object(); return $http->head( $url, $args ); } /** * Retrieve only the headers from the raw response. * * @since 2.7.0 * * @param array $response HTTP response. * @return array The headers of the response. Empty array if incorrect parameter given. */ function wp_remote_retrieve_headers( $response ) { if ( is_wp_error($response) || ! isset($response['headers']) || ! is_array($response['headers'])) return array(); return $response['headers']; } /** * Retrieve a single header by name from the raw response. * * @since 2.7.0 * * @param array $response * @param string $header Header name to retrieve value from. * @return string The header value. Empty string on if incorrect parameter given, or if the header doesn't exist. */ function wp_remote_retrieve_header( $response, $header ) { if ( is_wp_error($response) || ! isset($response['headers']) || ! is_array($response['headers'])) return ''; if ( array_key_exists($header, $response['headers']) ) return $response['headers'][$header]; return ''; } /** * Retrieve only the response code from the raw response. * * Will return an empty array if incorrect parameter value is given. * * @since 2.7.0 * * @param array $response HTTP response. * @return int|string The response code as an integer. Empty string on incorrect parameter given. */ function wp_remote_retrieve_response_code( $response ) { if ( is_wp_error($response) || ! isset($response['response']) || ! is_array($response['response'])) return ''; return $response['response']['code']; } /** * Retrieve only the response message from the raw response. * * Will return an empty array if incorrect parameter value is given. * * @since 2.7.0 * * @param array $response HTTP response. * @return string The response message. Empty string on incorrect parameter given. */ function wp_remote_retrieve_response_message( $response ) { if ( is_wp_error($response) || ! isset($response['response']) || ! is_array($response['response'])) return ''; return $response['response']['message']; } /** * Retrieve only the body from the raw response. * * @since 2.7.0 * * @param array $response HTTP response. * @return string The body of the response. Empty string if no body or incorrect parameter given. */ function wp_remote_retrieve_body( $response ) { if ( is_wp_error($response) || ! isset($response['body']) ) return ''; return $response['body']; } /** * Retrieve only the body from the raw response. * * @since 4.4.0 * * @param array $response HTTP response. * @return array An array of `WP_Http_Cookie` objects from the response. Empty array if there are none, or the response is a WP_Error. */ function wp_remote_retrieve_cookies( $response ) { if ( is_wp_error( $response ) || empty( $response['cookies'] ) ) { return array(); } return $response['cookies']; } /** * Retrieve a single cookie by name from the raw response. * * @since 4.4.0 * * @param array $response HTTP response. * @param string $name The name of the cookie to retrieve. * @return WP_Http_Cookie|string The `WP_Http_Cookie` object. Empty string if the cookie isn't present in the response. */ function wp_remote_retrieve_cookie( $response, $name ) { $cookies = wp_remote_retrieve_cookies( $response ); if ( empty( $cookies ) ) { return ''; } foreach ( $cookies as $cookie ) { if ( $cookie->name === $name ) { return $cookie; } } return ''; } /** * Retrieve a single cookie's value by name from the raw response. * * @since 4.4.0 * * @param array $response HTTP response. * @param string $name The name of the cookie to retrieve. * @return string The value of the cookie. Empty string if the cookie isn't present in the response. */ function wp_remote_retrieve_cookie_value( $response, $name ) { $cookie = wp_remote_retrieve_cookie( $response, $name ); if ( ! is_a( $cookie, 'WP_Http_Cookie' ) ) { return ''; } return $cookie->value; } /** * Determines if there is an HTTP Transport that can process this request. * * @since 3.2.0 * * @param array $capabilities Array of capabilities to test or a wp_remote_request() $args array. * @param string $url Optional. If given, will check if the URL requires SSL and adds * that requirement to the capabilities array. * * @return bool */ function wp_http_supports( $capabilities = array(), $url = null ) { $http = _wp_http_get_object(); $capabilities = wp_parse_args( $capabilities ); $count = count( $capabilities ); // If we have a numeric $capabilities array, spoof a wp_remote_request() associative $args array if ( $count && count( array_filter( array_keys( $capabilities ), 'is_numeric' ) ) == $count ) { $capabilities = array_combine( array_values( $capabilities ), array_fill( 0, $count, true ) ); } if ( $url && !isset( $capabilities['ssl'] ) ) { $scheme = parse_url( $url, PHP_URL_SCHEME ); if ( 'https' == $scheme || 'ssl' == $scheme ) { $capabilities['ssl'] = true; } } return (bool) $http->_get_first_available_transport( $capabilities ); } /** * Get the HTTP Origin of the current request. * * @since 3.4.0 * * @return string URL of the origin. Empty string if no origin. */ function get_http_origin() { $origin = ''; if ( ! empty ( $_SERVER[ 'HTTP_ORIGIN' ] ) ) $origin = $_SERVER[ 'HTTP_ORIGIN' ]; /** * Change the origin of an HTTP request. * * @since 3.4.0 * * @param string $origin The original origin for the request. */ return apply_filters( 'http_origin', $origin ); } /** * Retrieve list of allowed HTTP origins. * * @since 3.4.0 * * @return array Array of origin URLs. */ function get_allowed_http_origins() { $admin_origin = parse_url( admin_url() ); $home_origin = parse_url( home_url() ); // @todo preserve port? $allowed_origins = array_unique( array( 'http://' . $admin_origin[ 'host' ], 'https://' . $admin_origin[ 'host' ], 'http://' . $home_origin[ 'host' ], 'https://' . $home_origin[ 'host' ], ) ); /** * Change the origin types allowed for HTTP requests. * * @since 3.4.0 * * @param array $allowed_origins { * Default allowed HTTP origins. * @type string Non-secure URL for admin origin. * @type string Secure URL for admin origin. * @type string Non-secure URL for home origin. * @type string Secure URL for home origin. * } */ return apply_filters( 'allowed_http_origins' , $allowed_origins ); } /** * Determines if the HTTP origin is an authorized one. * * @since 3.4.0 * * @param null|string $origin Origin URL. If not provided, the value of get_http_origin() is used. * @return string True if the origin is allowed. False otherwise. */ function is_allowed_http_origin( $origin = null ) { $origin_arg = $origin; if ( null === $origin ) $origin = get_http_origin(); if ( $origin && ! in_array( $origin, get_allowed_http_origins() ) ) $origin = ''; /** * Change the allowed HTTP origin result. * * @since 3.4.0 * * @param string $origin Result of check for allowed origin. * @param string $origin_arg Original origin string passed into is_allowed_http_origin function. */ return apply_filters( 'allowed_http_origin', $origin, $origin_arg ); } /** * Send Access-Control-Allow-Origin and related headers if the current request * is from an allowed origin. * * If the request is an OPTIONS request, the script exits with either access * control headers sent, or a 403 response if the origin is not allowed. For * other request methods, you will receive a return value. * * @since 3.4.0 * * @return string|false Returns the origin URL if headers are sent. Returns false * if headers are not sent. */ function send_origin_headers() { $origin = get_http_origin(); if ( is_allowed_http_origin( $origin ) ) { @header( 'Access-Control-Allow-Origin: ' . $origin ); @header( 'Access-Control-Allow-Credentials: true' ); if ( 'OPTIONS' === $_SERVER['REQUEST_METHOD'] ) exit; return $origin; } if ( 'OPTIONS' === $_SERVER['REQUEST_METHOD'] ) { status_header( 403 ); exit; } return false; } /** * Validate a URL for safe use in the HTTP API. * * @since 3.5.2 * * @param string $url * @return false|string URL or false on failure. */ function wp_http_validate_url( $url ) { $original_url = $url; $url = wp_kses_bad_protocol( $url, array( 'http', 'https' ) ); if ( ! $url || strtolower( $url ) !== strtolower( $original_url ) ) return false; $parsed_url = @parse_url( $url ); if ( ! $parsed_url || empty( $parsed_url['host'] ) ) return false; if ( isset( $parsed_url['user'] ) || isset( $parsed_url['pass'] ) ) return false; if ( false !== strpbrk( $parsed_url['host'], ':#?[]' ) ) return false; $parsed_home = @parse_url( get_option( 'home' ) ); $same_host = strtolower( $parsed_home['host'] ) === strtolower( $parsed_url['host'] ); if ( ! $same_host ) { $host = trim( $parsed_url['host'], '.' ); if ( preg_match( '#^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$#', $host ) ) { $ip = $host; } else { $ip = gethostbyname( $host ); if ( $ip === $host ) // Error condition for gethostbyname() $ip = false; } if ( $ip ) { $parts = array_map( 'intval', explode( '.', $ip ) ); if ( 127 === $parts[0] || 10 === $parts[0] || 0 === $parts[0] || ( 172 === $parts[0] && 16 <= $parts[1] && 31 >= $parts[1] ) || ( 192 === $parts[0] && 168 === $parts[1] ) ) { // If host appears local, reject unless specifically allowed. /** * Check if HTTP request is external or not. * * Allows to change and allow external requests for the HTTP request. * * @since 3.6.0 * * @param bool false Whether HTTP request is external or not. * @param string $host IP of the requested host. * @param string $url URL of the requested host. */ if ( ! apply_filters( 'http_request_host_is_external', false, $host, $url ) ) return false; } } } if ( empty( $parsed_url['port'] ) ) return $url; $port = $parsed_url['port']; if ( 80 === $port || 443 === $port || 8080 === $port ) return $url; if ( $parsed_home && $same_host && isset( $parsed_home['port'] ) && $parsed_home['port'] === $port ) return $url; return false; } /** * Whitelists allowed redirect hosts for safe HTTP requests as well. * * Attached to the http_request_host_is_external filter. * * @since 3.6.0 * * @param bool $is_external * @param string $host * @return bool */ function allowed_http_request_hosts( $is_external, $host ) { if ( ! $is_external && wp_validate_redirect( 'http://' . $host ) ) $is_external = true; return $is_external; } /** * Whitelists any domain in a multisite installation for safe HTTP requests. * * Attached to the http_request_host_is_external filter. * * @since 3.6.0 * * @global wpdb $wpdb WordPress database abstraction object. * @staticvar array $queried * * @param bool $is_external * @param string $host * @return bool */ function ms_allowed_http_request_hosts( $is_external, $host ) { global $wpdb; static $queried = array(); if ( $is_external ) return $is_external; if ( $host === get_current_site()->domain ) return true; if ( isset( $queried[ $host ] ) ) return $queried[ $host ]; $queried[ $host ] = (bool) $wpdb->get_var( $wpdb->prepare( "SELECT domain FROM $wpdb->blogs WHERE domain = %s LIMIT 1", $host ) ); return $queried[ $host ]; } /** * 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.4.0 * * @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. */ function wp_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'] ) ) { $path_parts = explode( '/', substr( $parts['path'], 2 ), 2 ); $parts['host'] = $path_parts[0]; if ( isset( $path_parts[1] ) ) { $parts['path'] = '/' . $path_parts[1]; } else { unset( $parts['path'] ); } } return $parts; }