Frank S.: Automatisches Generieren von Links in PHP

Beitrag lesen

Dein regulärer Ausdruck, der auf www.example.com matchen soll, sieht so aus:
"( |^)(www.[-a-zA-Z0-9@:%_+.~#?&//=]+)"i

Er verlangt also, dass vor dem www entweder ein Leerzeichen, oder aber der absolute Beginn der Zeichenkette (da du ja nicht mal das MultiLine-Flag nutzt) stehen soll - ist aber bei obigem Beispieltext beides nicht (mehr) der Fall, also kein Treffer.

Stimmt, das war das Problem, habs jetzt so geändert:

function links($text) {  
  $text = html_entity_decode($text);  
  $p[] = '"(( |^|\n)((ftp|http|https){1}://)[-a-zA-Z0-9@:%_+.~#?&//=]+)"i';  
  $r[] = '<a href="$1" target="_blank">\1</a>';  
  $p[] = '"( |^|\n)(www.[-a-zA-Z0-9@:%_+.~#?&//=]+)"i';  
  $r[] = '\1<a href="http://\2" target="_blank">\\2</a>';  
  $p[] = '"([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})"i';  
  $r[] = '<a href="mailto:\1">\\1</a>';  
  $text = preg_replace($p, $r, $text);  
  return $text;  
} 

Danke für den Tipp!