テキストにURLが含まれていたら自動リンク

phpでテキストにURLが含まれていたら自動リンクするというのをやりたくて、最初XOOPSのソースなんかを参考にしてみたりしたのですが、


どうもXOOPS自動リンク機能は頭が悪いので(余計なところまでリンクしちゃったりする)、
どうにかもっと精度の高い自動リンクにならんかなといろんなとこの正規表現を拝見しつつ、こんな感じにしてみた↓

<?php
$patterns = array("/(https?|ftp)(:\/\/[[:alnum:]\+\$\;\?\.%,!#~*\/:@&=_-]+)/i");
$replacements = array("<a href=\"\\1\\2\">\\1\\2</a>");
$ret = preg_replace($patterns, $replacements, $text);
?>


参考
URLの自動リンクをする正規表現(PHP) (こまちドーナツ)