Andreas-Loibl.de Programmieren :: PHP
Hintergrundbild

URL's und E-Mail-Adressen'anklickbar' machen

Um in einem Text (z.B in einem Gästebucheintrag) die eMail-Adressen und die URI's in Hyperlinks umzuwandeln (sinnvoll, wenn man HTML verbietet), hilft ein regulärer Ausdruck:
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.