$part) { $isMarkdownLink = $num % 2 !== 0; $result .= $isMarkdownLink ? $part : $replacer->replaceCallback($part, \Closure::fromCallable([$this, 'getMarkdownHighlight'])); } return $result; } /** * Return markdown link highlight * Example: [http://example.com](http://example.com) * * @param UrlMatch $match * @return string */ private function getMarkdownHighlight(UrlMatch $match): string { $text = $this->getText($match); $textSafeBrackets = str_replace(['[', ']'], ['\\[', '\\]'], $text); $link = $this->getLink($match); $linkSafeBrackets = str_replace(['(', ')'], ['%28', '%29'], $link); return sprintf( '%s[%s](%s)%s', $this->getContentBefore($match), $textSafeBrackets, $linkSafeBrackets, $this->getContentAfter($match) ); } }