block_core_navigation_link_maybe_urldecode()WP 6.2.0

Decodes a url if it's encoded, returning the same url if not.

No Hooks.

Returns

String. $url Returns the decoded url.

Usage

block_core_navigation_link_maybe_urldecode( $url );
$url(string) (required)
The url to decode.

Changelog

Since 6.2.0 Introduced.

block_core_navigation_link_maybe_urldecode() code WP 7.0

function block_core_navigation_link_maybe_urldecode( $url ) {
	$is_url_encoded = false;
	$query          = parse_url( $url, PHP_URL_QUERY );
	$query_params   = wp_parse_args( $query );

	foreach ( $query_params as $query_param ) {
		$can_query_param_be_encoded = is_string( $query_param ) && ! empty( $query_param );
		if ( ! $can_query_param_be_encoded ) {
			continue;
		}
		if ( rawurldecode( $query_param ) !== $query_param ) {
			$is_url_encoded = true;
			break;
		}
	}

	if ( $is_url_encoded ) {
		return rawurldecode( $url );
	}

	return $url;
}