_make_url_clickable_cb( array $matches ): string

This function’s access is marked private. This means it is not intended for use by plugin or theme developers, only in other core functions. It is listed here for completeness.

Callback to convert URI match to HTML A element.

Description

This function was backported from 2.5.0 to 2.3.2. Regex callback for make_clickable() .

Parameters

$matchesarrayrequired
Single Regex Match.

Return

string HTML A element with URI address.

Source

function _make_url_clickable_cb( $matches ) {
	$url = $matches[2];

	if ( ')' === $matches[3] && strpos( $url, '(' ) ) {
		/*
		 * If the trailing character is a closing parethesis, and the URL has an opening parenthesis in it,
		 * add the closing parenthesis to the URL. Then we can let the parenthesis balancer do its thing below.
		 */
		$url   .= $matches[3];
		$suffix = '';
	} else {
		$suffix = $matches[3];
	}

	// Include parentheses in the URL only if paired.
	while ( substr_count( $url, '(' ) < substr_count( $url, ')' ) ) {
		$suffix = strrchr( $url, ')' ) . $suffix;
		$url    = substr( $url, 0, strrpos( $url, ')' ) );
	}

	$url = esc_url( $url );
	if ( empty( $url ) ) {
		return $matches[0];
	}

	$rel_attr = _make_clickable_rel_attr( $url );

	return $matches[1] . "<a href=\"{$url}\"{$rel_attr}>{$url}</a>" . $suffix;
}

Changelog

VersionDescription
2.3.2Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.