preg_replace Pattern um URLs im Text zu ersetzen

2008-12-12

Wieder mal was aus der Kategorie gesucht und gefunden.

Ich habe ewig lange schon das optimale Pattern für die Ersetzung von URLs innerhalb eines Textes durch einen korrekten Link gesucht. Jetzt endlich glaube ich es gefunden zu haben.

$text = preg_replace("~[^"=/]{1}((www.[a-z][a-z0-9_..-]*[a-z]{2,6})([a-zA-Z0-9\/\*_-\?&%.]*))[s]?~i", " $2$3 ", $text);
$pattern = '#(^|[^"=]{1})(http://|ftp://|mailto:|news:)([^\s]+)([\s\n]|$)#sm';
$text = preg_replace($pattern,"\1\3\4",$text)."\n";
return $text;