Moin!
Also mein Ziel ist es alle Mailadressen und URLs zu filtern un als Link zu machen.
Habe dann überlegt ich könnte alle möglichne protokolle Suchen und bis zum ertsen Leerzcihen als URL ansehen, das ist aber schlehct und führt auch zu Fehlern im HTML....
Aber ich kann doch nicht diesen Seitenlangen RegEx da nehmen, das braucht ja ewig, außerdem schluckt der doch so eingaben wie google.de nicht oder?
Wie ich sehe, hast du insbesondere die Nachteiler deiner Idee entdeckt. Leider gibts da keinen einfachen Weg drumherum - sonst würde er bestimmt schon entdeckt worden sein.
Und bei Mailadressn bin ich mir noch unschlüssiger...
einfach @ suchen und den Text davor bis zum Leerzeichen und danach zum Leerzeichen als Mailaddy...
Ich beschreibe dein Grundsatzproblem mal mit eigenen Worten - vielleicht bringt dir das Klarheit:
Um die in einem schlichten Text enthaltene URL-Angaben und Mailadressen bei HTML-Ausgabe als klickbare Links auszugeben, benötigst du Regeln. Diese Regeln beschreiben, welche Konstruktion bzw. Kombination aus Buchstaben du als URL oder Mailadresse erkennst.
Dein Problem ist jetzt, dass dir als Mensch beim Lesen eines Textes sofort jegliche URL-Angabe auffällt, aber du keine einfache Regel findest, das automatisiert durch den Computer erledigen zu lassen.
Und dafür gibts leider keine Lösung. Denn dein Gehirn erledigt viele Dinge zusätzlich, während es den Text verarbeitet: Es erkennt einen Sinnzusammenhang, es versteht, wie Dinge gemeint sind, versteht Ironie (das genaue Gegenteil dessen, was geschrieben wurde, ist gemeint), es erkennt Muster.
Der Computer ist in allen diesen Dingen der absolute Verlierer - vielleicht mit Ausnahme der Mustererkennung, sofern ein Mensch ihm vorher aufs Bit genau erklärt hat, welche Muster gesucht werden.
Trotzdem wird das erzielbare Resultat dir vermutlich nicht sonderlich gefallen.
Mal konkret zu URLs: Aus der Praxis dieses Forums kann ich dir sagen: Manche URLs sollten einfach nicht verlinkt werden. Und es wäre vermutlich extrem kontraproduktiv, wenn das dennoch automatisch geschieht, weil verlinkte URLs im Archiv von Suchmaschinen indiziert und gespidert werden.
Und was konkret URL-Muster angeht: Welche dieser folgenden Muster ist denn eine verlinkungswürdige URL?
http://www.example.org
http://www.test.de
www.blafasel.invalid
ohnewww.example.com
example.com
ASP.NET
Fakt ist: Alle diese Texte sehen auf den ersten Blick so aus, wie eine URL. Aber nur eine einzige von ihnen existiert in der realen Welt so, dass man dahin linken könnte: test.de! Allerdings wird "test.de" gerne von unwissenden Textautoren als Beispieldomain genutzt, es geht ihnen nicht um die Stiftung Warentest.
Ungefähr dasselbe Chaos gibts bei Mailadressen nochmal.
Natürlich kannst du die erkannte Domain im DNS-System auf Existenz prüfen. Aber du hast ja schon Vorbehalte gegen den Einsatz eines riesigen RegEx, der angeblich (Hast du es ausprobiert? Tu das mal!) Jahre benötigen soll. DNS ist noch tausendmal langsamer. Und würde dir außerdem bestätigen, dass example.org/.com/.net existiert. Und "ASP.NET" ebenfalls, auch wenn damit gar keine Domain gemeint ist.
In diesem Forum ist daher die Regel: Wenn eine URL nicht in einem speziellen Textcontainer steckt <urlangabe>, dann wird sie nicht klickbar gemacht. Und das ist eine gute Regel. Die URL muß außerdem 100% korrekt codiert sein, mit http:// vorneweg und korrektem Encoding im URL-Parameter, sollte einer dranhängen, sonst scheitert er Link.
Und alle anderen URLs muß eben jeder selbst "klickbar" machen oder auf einem anderen Weg aufrufen.
- Sven Rautenberg
"Love your nation - respect the others."