function replaceUriWithHyperlink($code) { $p = '#(^|[^\"=;]{1})(http://|ftp://|mailto:|news:)([^\s<>\|]+)([\s\n<>\|]|$)#sm'; return preg_replace($p,"\\1<a href=\"\\2\\3\">\\2\\3</a>\\4",$code); } function replaceEmailWithHyperlink($code) { $code = eregi_replace ("[_a-zA-z0-9\-]+(\.[_a-zA-z0-9\-]+)*\@" . "[_a-zA-z0-9\-]+(\.[a-zA-z]{1,3})+", "<a href=\"mailto:\\0\">\\0</a>", $code); return $code; }
Mit der ersten Funktion werden alle http://, ftp://, mailto: und news: - Adressen in Hyperlink-Tags umgewandelt. Falls das Zeichen vor der URI ein Anführungszeichen ("), ein Gleichheitszeichen (=) oder ein Semikolon (;) ist, wird sie nicht umgewandelt, weil sonst bestehende HTML-Tags zerstört werden könnten.
Mit der zweiten Funktion werden alle eMail-Adressen (alle; auch die ohne mailto:) in Hyperlinks in der Form <a href="mailto:email@host.com">email@host.com</a> verwandelt.