OK, I'll bite. How about (before processing markup):
$content =~ s~<font color=red>(?< !\&#091;url&#091;=\&#093;&#093;)</font color=red><font color=purple>\b</font color=purple>(https?://<font color=blue>&#091;^\s<>"'{}\&#091;\&#093;&#093;*</font color=blue><font color=green>&#091;^,.!\s<>"'{}\&#091;\&#093;&#093;</font color=green>)~\&#091;url\&#093;$1\&#091;/url\&#093;~g;

The goal is to replace http://wherever by &#091;url&#093;http://wherever&#091;/url&#093;.
The red part keeps us from match something where the http:// (or https://) is already preceeded by &#091;url&#093; or &#091;url=
The purple makes sure we have a "word boundary" before the http:
The blue matches a bunch of characters which may not contain: whitespace < > " ' { } [ ]
The green matches the last character in the URL. It is not allowed to match a comma, period, or explanation point (in addition to the characters outlawed by the blue part). This will exclude punctuation which is intended to end a sentence from the URL (with the exception of a sentence that ends in a question mark--we really can't do anything about that since it is hard to know if it should be part of the URL).


Bill Dimm, <A target="_blank" HREF=http://MagPortal.com/>MagPortal.com</A> - <font color=red>free</font color=red> feeds for your site.<P ID="edit"><FONT SIZE=-1><EM>Edited by BillD on 04/15/01 01:59 PM (server time).</EM></FONT>