MoiN, Christian!
Ich glaube, Sven, du haettest die anderen Postings auch mal lesen
sollen ;-) Wir diskutieren hier ja nicht nur so zum Spass.
Hatte ich gelesen. :)
Im Array $gefunden stehen jetzt alle Klammerausdrücke, die der
reguläre Ausdruck so produziert hat. Mit If-Abfragen und etwas
Raten kann man fehlende Informationen hinzufügen und in einen
schönen Link verwandeln. :)
Iwo. Das geht mit einem RegEx.
Also, meine debuggte Version:
preg_replace('!(:?(:?(http://|ftp://|mailto:[a-zA-Z0-9._-]+@)*([a-zA-Z0-9.-]+.)?([A-Za-z0-9-]{3,}.)([a-zA-Z0-9-]+.)*([a-z]{2,}))|(:?((\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})))(/[a-zA-Z%0-9]*)*(?[a-zA-Z%0-9&;+=,]*)?(#.*)?!e','"<a href="".("$6" ? "$6" : (($1 ? "$1" : 'http://)."$2$3$4$5")."$7$8$9">$1$2$3$4$5$6$7$8</a>"',$text)
Das ist leider ungetestet und koennte kleinere Fehler im e-Teil
haben.
Hat es auch gehabt. Als Belohnung für die Trickkiste gibts jetzt eine debuggte und getestete Version, die wirklich hervorragende Dienste leistet (war ja auch sehr gute Vorarbeit).
Da ich Befürchtungen habe, daß das Forum den extrem langen RegExp zerhackt und unbrauchbar macht, zerteile ich die Zeile in handliche Stückchen.
$pattern = '!(:?(:?(http://|ftp://|mailto:[a-zA-Z0-9._-]+@)*';
$pattern .= '([a-zA-Z0-9.-]+.)?([A-Za-z0-9-]{2,}.)([a-zA-Z0-9-]+.)*';
$pattern .= '([a-z]{2,}))|(:?((\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})))';
$pattern .= '(/[a-zA-Z%0-9]*)*(?[a-zA-Z%0-9&;+=,]*)?)(#.*)?!e';
$ersatz = '"<a href="".("$6" ? "$6" : (("$3" ? "$3" : "http://")';
$ersatz .= '."$4$5"))."$7$8$9">$3$4$5$6$7$8</a>"';
Wenn dann in $text der zu ersetzende Text steht, kriegen eingegebene Links so einen HTML-Link drauf.
Zum Testen:
$text = "Link zu forum.de.selfhtml.org! Bitte auch bei http://selfaktuell.teamone.de vorbeischauen. Dumm: Das gibt Fehler.aber sowas passiert eben.";
$neutext = preg_replace($pattern,$ersatz,$text);
echo htmlentities($neutext)."<br>\n";
echo "$neutext<br>\n";ergibt
Ausgabe:
Link zu <a href="http://forum.de.selfhtml.org">forum.de.selfhtml.org</a>! Bitte auch bei <a href="http:// selfaktuell.teamone.de">http://selfaktuell.teamone.de</a> vorbeischauen. Dumm: Das gibt <a href="http:// Fehler.aber">Fehler.aber</a> sowas passiert eben.
Link zu <forum.de.selfhtml.org>! Bitte auch bei <http:// selfaktuell.teamone.de> vorbeischauen. Dumm: Das gibt <Fehler.aber> sowas passiert eben.
Gruesse,
C'Klammerkoenig'K
Wahrlich mit dem Klammerbeutel gepudert. ;)
- Sven Rautenberg