Qualcosa tipo

Codice PHP:
preg_replace('/[url="([^"]([^<]+)[/url]'"<a href=\"" do_something($1) . "\">$2</a>"$str
dove do_something è quello che vuoi fare.
L'espressione è solo un esempio. Funziona a patto che sia rispettato lo schema del pattern seza attributi aggiuntivi.