If that is the case, something like this would work:
$text = preg_replace('/\[font\=(.*?)\](.*?)\[\/font\]/is', '<span style="font: $1;">$2</span>', $text);
Your example would work, but also [font=15px arial,sans-serif]Test[/font] would work.
For the URL, you can get really specific, but one I use is
$text = preg_replace('/\[url\=(.*?)\](.*?)\[\/url\]/is','<a href="$1">$2</a>',$text);