Sebastian Becker: Regulärer Ausdruck gesucht: a href (Link)

Beitrag lesen

Hallo, Christof,

zu regulären Ausdrücken kann ich Dir wenig sagen, da ich sie nicht ganz durchschaue.

Ich habe aber mal mit Hilfe von Codebestandteilen aus dem Netz eine Funktion zusammengebastelt, die Links und e-mail-Adressen klickbar macht. Vielleicht kannst Du damit was anfangen ...

Grüße,

Sebastian

-------------------- schnipp --------------------

function makeClickable($str)
{
// merged from several sources
// please send improvements to
// sebastian.becker@berlin.de

// add http:// to www.
// $str = str_replace(' www.',' http://www.',$str);
$str = str_replace('www.','http://www.',$str);
$str = str_replace('http://http://','http://',$str);

// pattern
$pattern = '#(^|[^"=]{1})(http://|https://|ftp://|mailto:|news:)([^\s<>]+)([\s\n<>]|$)#sm';

// add <a href=""></a> to links, but not in <a></a>
$str = preg_replace($pattern,"\1<a href="\2\3" target="_blank">\3</a>\4", $str);

// replace mail addresses
$str = eregi_replace("(([a-z0-9-.]+)@([a-z0-9-.]+).([a-z0-9]+))","<a href="mailto:\0">\0</a>",$str);

return $str;
}

echo makeClickable("Die Domains www.google.com und www.google.de (beide ohne http://) sollten eigentlich <a href="http://www.google.de" target="_blank">www.google.de</a> (im Ursprungstext bereits verlinkt) und http://www.google.de (im Ursprungstext beide mit http://) geschrieben werden.<br><br>Post bitte an info@google.com<br><br>www, www., ftp., mailto:");

?>