Я мало что знаю о preg_replace, но мне нужна была точно такая же функция, как и у вас.
Изменение строки:
preg_replace($match[2], "<a href='$url'>{$match[3]}</a>", $match[2]);
для этого:
str_replace($match[0],$url,$text);
кажется, добивается цели.
Мне просто нужно было получить отдачу от этой функции, поэтому:
//$text = preg_replace($match[2], "<a href='$url'>{$match[3]}</a>", $match[2]);
$text = str_replace($match[0],$url,$text);