WordPress Version: 5.5
/**
* Callback to convert URI match to HTML A element.
*
* This function was backported from 2.5.0 to 2.3.2. Regex callback for make_clickable().
*
* @since 2.3.2
* @access private
*
* @param array $matches Single Regex Match.
* @return string HTML A element with URI address.
*/
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];
}
if ('comment_text' === current_filter()) {
$rel = 'nofollow ugc';
} else {
$rel = 'nofollow';
}
/**
* Filters the rel value that is added to URL matches converted to links.
*
* @since 5.3.0
*
* @param string $rel The rel value.
* @param string $url The matched URL being converted to a link tag.
*/
$rel = apply_filters('make_clickable_rel', $rel, $url);
$rel = esc_attr($rel);
return $matches[1] . "<a href=\"{$url}\" rel=\"{$rel}\">{$url}</a>" . $suffix;
}