kölir: mailadressen und urls

Hi,

tut mir leid, dass ich das Thema hier wieder bringen muss, aber ich kann mich einfach nicht entschieden...

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?

Und bei Mailadressn bin ich mir noch unschlüssiger...
einfach @ suchen und den Text davor bis zum Leerzeichen und danach zum Leerzeichen als Mailaddy...

mfg

  1. 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."
    1. Hi,

      danke für die Antwotr, das hat mir schonaml weitergeholfen.
      Jeztt habe ich beschlossen es so ähnlich wie hier im Forum zu machen, weil mir das andere aufgrund deiner einlechtenden Beispiele jetzt auch als sinnlos ershcient.

      Nun aber zu r weiteren Frage ich habe jetzt so einen Textcontainer.
      und jetz müsste ich die darin enthaltenen url und mailadressen dennoch prüfen...
      Für mailadressen wär der RegEx doch ganz akzeptabl:
      '#[a-z0-9-_]?[a-z0-9.-_]+[a-z0-9-_]?@[a-z.-]+.[a-z]{2,}#i'

      Aber was ist mit urls?

      Und wie setze ich die gefundenen korrekten adressen dann in das href="attribut" ?
      Wenn ich sie mit preg_replace ertszen möchte...wie griefe ich dann auf die fundstelle zu um sie in der ersetzung wieder ins href="attribut" zu schireben?

      gruß

  2. P.S.: sind eigtl schon Zahlen in Domains erlaubt?

    1. P.S.: sind eigtl schon Zahlen in Domains erlaubt?

      P.S.: und nochmal P.S.: Sind nicht auch Umlaute seit enustem erlaubt?

      also müsste die Klasse so aussehen:
      [a-z0-9.äöü_-]

      1. Hi,

        P.S.: sind eigtl schon Zahlen in Domains erlaubt?
        P.S.: und nochmal P.S.: Sind nicht auch Umlaute seit enustem erlaubt?

        schön ... Du erkennst so langsam, dass weit mehr erlaubt ist, als Du mit so einfachen RegEx erkennen kannst. Und in anderen TDLs sind natürlich auch ganz andere Sonderzeichen noch zulässig.
        Beschränke die automatische Prüfung doch auf ein Minimum, um Flüchtigeitsfehler abzufangen. Eine Mailadresse hat Zeichen gefolgt von einem @ gefolgt von Zeichen gefolgt von einem . gefolgt von Zeichen. Eine URL hat Zeichen gefolgt von einem . gefolgt von Zeichen. Beides endet nach dem letzten . AFAIK mit mindestens zwei und z.Z. höchstens 6 Zeichen a-z.

        freundliche Grüße
        Ingo

        1. Moin!

          Eine URL hat Zeichen gefolgt von einem . gefolgt von Zeichen. Beides endet nach dem letzten . AFAIK mit mindestens zwei und z.Z. höchstens 6 Zeichen a-z.

          Nein, das, was du da beschrieben hast, kann eine Domain sein. Es ist aber mit Sicherheit keine URL.

          - Sven Rautenberg

          --
          "Love your nation - respect the others."