Setoです。
環境が不明ですけど
preg_replace_callback は利用できませんか?
>$message = ereg_replace("http://([[:graph:]\S\$\+\?\.-=_%,:@!#~*/&]+)",'<a
>href="http://www.example.com/redirect.php?u='.urlencode("http://\\1").'"
>target="_blank">http://\\1</a>',$message);
>このようにしても思うように置き換えてくれませんでした。
Junya Seto