Canon: Sammelthread - PREG MATCH AUSDRÜCKE

Hallo,

Jeder von uns kennt das.
Pflichtfelder in Web-Formularen.

Ich möchte mit diesem Thread schlicht und einfach die beliebtesten Preg_match-Ausdrücke/Suchmuster sammeln für die wichtigsten Felder in Web-Formularen:

NAME
Suchmuster:
?
Erklärung:

  • Sollte mehr als ein Zeichen beinhalten
  • Ansonsten ne Heikle Sache mit Sonderzeichen usw

VORNAME
Suchmuster:
?
Erklärung:

  • Genau wie NAME

STRASSE
Suchmuster:
?
Erklärung:

  • Sollte einen Punkt beinhalten
  • Buchstaben UND Zahlen

PLZ
Suchmuster:
?
Erklärung:

  • Sollte 5-Stellig sein, oder?

ORT
Suchmuster:
?
Erklärung:

  • Sollte keine Zahlen beinhalten, oder?

TEL
Suchmuster:
?
Erklärung:

  • Sollte mindestens x Zahlen beinhalten. (Welche ist die kürzeste Nummer die Ihr kennt? Mit Vorwahl!)

FAX
Suchmuster:
?
Erklärung:

  • Selbe wie TEL

MOBIL
Suchmuster:
Erklärung:

  • Sollte mindestens x Zahlen beinhalten.
  • Ein Gültiges Netz (0171/0172/0151/...)

EMAIL
Suchmuster:
Erklärung:

  • Das wohl umstrittenste Thema -
  • Würde ich aber dennoch gerne hier mit in die Sammlung aufnehmen -

ANDERE SUCHMUSTER?

Vielen Dank an alle die mitmachen! Los Gehts!
Canon

  1. Hi,

    Ich möchte mit diesem Thread schlicht und einfach die beliebtesten Preg_match-Ausdrücke/Suchmuster sammeln für die wichtigsten Felder in Web-Formularen:

    Ich finde dein Vorhaben etwas unnötig, da das einzige was Sinn macht, die E-Mail Adresse ist. Dazu findet man genug im Internet. Der Rest ist unnötig oder zu trivial. Oder lässt sich nicht allgemein lösen.

    Auch würden die RegExp wohl nur auf Deutschland zu treffen (bes. PLZ).

    NAME
    Suchmuster:
    ?
    Erklärung:

    • Sollte mehr als ein Zeichen beinhalten
    • Ansonsten ne Heikle Sache mit Sonderzeichen usw

    Du sagst es. Du willst doch nicht jedes erdenkliche Sonderzeichen in die RegExp packen... Wenn du es nicht tust, würdest du Leute mit Sonderzeichen im Namen ausschließen.

    STRASSE
    Suchmuster:
    ?
    Erklärung:

    • Sollte einen Punkt beinhalten
    • Buchstaben UND Zahlen

    Wieso einen Punkt? "Hauptstraße 1" ist bei mir ne gültige Straße.

    Es gibt auch Hausnummer mit Schrägstrich oder so. Manche schreiben es vll. auch mit Bindestrich.
    Manchmal muss man vll. auch das Stückwerk/Appartment angeben.

    ==> Lässt sich imo nicht zusammen fassen.

    PLZ
    Suchmuster:
    ?
    Erklärung:

    • Sollte 5-Stellig sein, oder?

    In Deutschland schon. Man kann aber auch D-12435 angeben. Ist ja auch gültig. Im Ausland ists wieder ganz anders, evtl auch mit Buchstaben oder Sonderzeichen.

    ORT
    Suchmuster:
    ?
    Erklärung:

    • Sollte keine Zahlen beinhalten, oder?

    /[a-zA-Z]+/

    TEL
    Suchmuster:
    ?
    Erklärung:

    • Sollte mindestens x Zahlen beinhalten. (Welche ist die kürzeste Nummer die Ihr kennt? Mit Vorwahl!)

    Da gibts meiner Meinung zu viele verschiedene Formate. Mit /, -, + (bei Vorwahl).

    MOBIL
    Suchmuster:
    Erklärung:

    • Sollte mindestens x Zahlen beinhalten.
    • Ein Gültiges Netz (0171/0172/0151/...)

    Es wird immer ein Netz geben, was du noch nicht kennst. Willst du dann immer die RegEx anpassen?

    Auch hier kann man z.B. +49 noch angeben, oder jede andere Länder vorwahl.

    Allein die Mindestanzahl an Zeichen ließe sich erschlagen.

    EMAIL
    Suchmuster:
    Erklärung:

    • Das wohl umstrittenste Thema -
    • Würde ich aber dennoch gerne hier mit in die Sammlung aufnehmen -

    ==> google.

    Gruß!

    1. ORT

      • Sollte keine Zahlen beinhalten, oder?
        /[a-zA-Z]+/

      echo preg_match("/[a-zA-Z]/","azAZ");
      // 1

      echo preg_match("/[a-zA-Z]/","azAZ123");
      // 1

      echo preg_match("/[a-zA-Z]/","123");
      // 0

      Sollte es nicht genau anders rum sein :) ?

      Canon

      1. ORT

        • Sollte keine Zahlen beinhalten, oder?
          /[a-zA-Z]+/

        Eher so:
        "/([1]+[a-zA-Z]$)/"

        1 <= azAZ
        1 <= az
        1 <= AZ
        0 <= azAZ123
        0 <= 123
        0 <= 123?
        0 <= ?
        0 <= /
        0 <= &
        0 <= %
        0 <= %()
        0 <= %123
        0 <= %123ABC
        0 <= %abc

        Aber Kann man das nicht abkürzen?
        Wie könnte ich meine Testreihe noch vervollständigen?

        Canon


        1. a-zA-Z ↩︎

        1. Ich weiss nicht was du suchst. Nimm eine Schweizer Karte zur Hand und schau dir Ortsnamen an.
          Alternativ: Gehe an grenznahes D-Land und erkundige dich über die Ortsschreibweisen.

          Du bist definitiv auf dem falschen Gleis:
          --Bezüglich Thema (was hat es mit PHP zu tun)
          --Vorhaben (wie sinnvoll ist es)
          --deinem aktuellen Problem (wie funktionieren Reguläre Ausdrücke)

          mfg Beat

          --
          Selber klauen ist schöner!
          1. Du bist definitiv auf dem falschen Gleis:
            --Bezüglich Thema (was hat es mit PHP zu tun)
            --Vorhaben (wie sinnvoll ist es)
            --deinem aktuellen Problem (wie funktionieren Reguläre Ausdrücke)[1]

            -- Sammelthread (gibt es in der Form hier eigentlich nicht, denn auch dieser verschwindet irgendwann im Archiv oder dem virtuellen Nirvane und kann in beiden Fällen nicht weiter beantwortet werden)

            Grüße, Matze

            [1] Das war meine erste Vermutung: "Ich bräuchte mal RegExp für alle möglichen Fälle aber hab keine Ahnung davon. Lass ich mir doch einfach die 'besten' der Experten geben und kopier mir die... nur wie krieg ich sie durch die Hintertür dazu, sie zu verraten... ah ich weiß -> OP"
            Nur so eine Vermutung...

            1. [latex]Mae  govannen![/latex]

              [1] Das war meine erste Vermutung: "Ich bräuchte mal RegExp für alle möglichen Fälle aber hab keine Ahnung davon. Lass ich mir doch einfach die 'besten' der Experten geben und kopier mir die... nur wie krieg ich sie durch die Hintertür dazu, sie zu verraten... ah ich weiß -> OP"
              Nur so eine Vermutung...

              Bietet sich an.

              Cü,

              Kai

              --
              The frog was a prince, the prince was a brick, the brick was an egg, the egg was a bird.
              Hadn't you heard?
              Yes, we're happy as fish and gorgeous as geese, and wonderfully clean in the morning.
              selfcode sh:( fo:| ch:? rl:( br:< n4:# ie:{ mo:| va:) js:) de:> zu:) fl:( ss:| ls:?
  2. Hallo,

    STRASSE
    Suchmuster:
    ?
    Erklärung:

    • Sollte einen Punkt beinhalten

    Nein. Ich benötige fast nie einen Punkt in einem Straßennamen.
    Warum sollte ich einen eingeben müssen?

    • Buchstaben UND Zahlen

    und Bindestriche ...

    PLZ
    Suchmuster:
    ?
    Erklärung:

    • Sollte 5-Stellig sein, oder?

    Nein. Fast vor meiner Haustüre gibt es andere Postleitzahlen.

    ORT
    Suchmuster:
    ?
    Erklärung:

    • Sollte keine Zahlen beinhalten, oder?

    Nein. Warum sollte es nicht wieder "Musterstadt 4" geben?

    TEL
    Suchmuster:
    ?
    Erklärung:

    • Sollte mindestens x Zahlen beinhalten. (Welche ist die kürzeste Nummer die Ihr kennt? Mit Vorwahl!)

    Nein. Es gibt Vanity-Nummern.

    FAX
    Suchmuster:
    ?
    Erklärung:

    • Selbe wie TEL

    Ja eben, auch dafür.

    MOBIL
    Suchmuster:
    Erklärung:

    • Sollte mindestens x Zahlen beinhalten.

    Nein. Es gibt Vanity-Nummern.

    • Ein Gültiges Netz (0171/0172/0151/...)

    Nein, diese Strategie ist zum Scheitern verurteilt, siehe nächster Punkt.

    EMAIL
    Suchmuster:
    Erklärung:

    • Das wohl umstrittenste Thema -
    • Würde ich aber dennoch gerne hier mit in die Sammlung aufnehmen -

    Selfforumssieb

    Freundliche Grüße

    Vinzenz

    1. STRASSE

      • Sollte einen Punkt beinhalten
        Nein. Ich benötige fast nie einen Punkt in einem Straßennamen.
        Warum sollte ich einen eingeben müssen?

      OK Stimmt.

      • Buchstaben UND Zahlen
      • Beispielstraße 123 -

      und Bindestriche ...

      ne

      PLZ
      Nein. Fast vor meiner Haustüre gibt es andere Postleitzahlen.

      Aja *schnauf*

      ORT

      • Sollte keine Zahlen beinhalten, oder?
        Nein. Warum sollte es nicht wieder "Musterstadt 4" geben?

      Wo soll es sowas geben?

      TEL
      FAX

      Diese Vanity-Geschichte ist doch eindeutig. Hinter jedem NAMEN steht eine ZAHL un die ist gefordert. Ich kenne genau EINE Person die eine Vanity-Nummer hat und die kann er ja schließlich übersetzen! Fertig!

      MOBIL

      • Ein Gültiges Netz (0171/0172/0151/...)
        Nein, diese Strategie ist zum Scheitern verurteilt, siehe nächster Punkt.

      OK, Aber

      • Mindestanzahl von Zeichen!

      EMAIL

      Selfforumssieb
      Wie sieht denn das Suchmuster aus auf das man sich letztendlich geeinigt hat?

      Canon

      1. und Bindestriche ...
        ne

        Viele Namen von Straßen und Plätze enthalten Bindestriche.

        1. und Bindestriche ...
          ne
          Viele Namen von Straßen und Plätze enthalten Bindestriche.

          Ja ne ist klar - hab das ja auch so gemeint :)

          Canon

          1. Mahlzeit Canon,

            und Bindestriche ...
            ne
            Viele Namen von Straßen und Plätze enthalten Bindestriche.
            Ja ne ist klar - hab das ja auch so gemeint :)

            Dann schreib das auch.

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
      2. Hallo,

        ORT

        • Sollte keine Zahlen beinhalten, oder?
          Nein. Warum sollte es nicht wieder "Musterstadt 4" geben?
          Wo soll es sowas geben?

        Damp2000 :D

        netten Tag
        ^da Powl

        --
        ===============================
        powl.hat-gar-keine-homepage.de/
        1. Mahlzeit Powl,

          ORT

          • Sollte keine Zahlen beinhalten, oder?
            Nein. Warum sollte es nicht wieder "Musterstadt 4" geben?
            Wo soll es sowas geben?

          Damp2000 :D

          Heimat, süße Heimat - dass ich da nicht drauf gekommen bin. <zurücklehn erinnerung="verträumt">Hachja, als ich damals dort meine Segelscheine gemacht habe ...</zurücklehn>

          MfG,
          EKKi

          --
          sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
      3. Mahlzeit Canon,

        • Buchstaben UND Zahlen
        • Beispielstraße 123 -

        und Bindestriche ...
        ne

        Ist "Hans-Christian-Andersen-Weg 3" bei Dir ein ungültiger Straßenname? Interessant ...

        PLZ
        Nein. Fast vor meiner Haustüre gibt es andere Postleitzahlen.
        Aja *schnauf*

        Was soll das bedeuten?

        Nein. Warum sollte es nicht wieder "Musterstadt 4" geben?
        Wo soll es sowas geben?

        Irgendwo? Irgendwann? Willst Du Deinen Code ständig anpassen? Willst Du die Namensvergabe in jedem Land der Erde ständig überwachen? Sportlich!

        TEL
        FAX
        Diese Vanity-Geschichte ist doch eindeutig. Hinter jedem NAMEN steht eine ZAHL un die ist gefordert. Ich kenne genau EINE Person die eine Vanity-Nummer hat und die kann er ja schließlich übersetzen! Fertig!

        Sehr benutzerfreundlich.

        MOBIL

        • Ein Gültiges Netz (0171/0172/0151/...)
          Nein, diese Strategie ist zum Scheitern verurteilt, siehe nächster Punkt.
          OK, Aber
        • Mindestanzahl von Zeichen!

        Kennst Du alle Telefonnetze der Welt und deren technische Rahmenbedingungen? Dann ja. Und wenn sich diese ändern? Siehe "ORT".

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    2. Hello,

      interessanter fände ich da schon eine Funktion zur Normalisierung von Straßen- oder Ortsnamen, um diese dann später im Index einer DB finden zu können.

      • Umlaute umwandeln
      • Bindestriche entfernen
      • nur Großbuchstaben
      • str.|str|strasse|straße umwandeln in STRASSE

      Kompliziert wird es dann, wenn jemand aus

      John-F.-Kennedy-Platz

      J.-F.-Kennedy-Platz gemacht hat oder

      John-Fitzgerald-Kennedy-Platz

      Alle anderen Überprüfungen finde ich auch sinnentleert, solange sie nicht gegen die Super-Monster-Realdatensammlung abgeglichen werden.

      Ein harzliches Glückauf

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
  3. Ich möchte mit diesem Thread schlicht und einfach die beliebtesten Preg_match-Ausdrücke/Suchmuster sammeln für die wichtigsten Felder in Web-Formularen:

    Wozu braucht man Suchmuster? Richtig, wenn es ein muster gibt. Ein Muster braucht allgemeingültige Regeln. Kennst du alle? Kann man sicherstellen, daß jeder Nutzer das in die Felder eingibt, was du dir vorstellst? Wie bspw. soll er sowas eingeben:

    Max Muster
    c/o Lieschen Müller
    ?

    Unter dieser Prämisse genügt es, zunächst mit isset das Vorhandensein zu checken, dann mit trim white spaces zu entfernen, mit empty abzufragen, ob dann noch was über ist und diesen Rest mit htmlspecialchars zu behandeln:
    http://de.php.net/manual/de/function.isset.php
    http://de.php.net/manual/de/function.trim.php
    http://de.php.net/manual/de/function.empty.php
    http://de.php.net/manual/de/function.htmlspecialchars.php

    Zusätzlich könnte man noch verschiedene Tests anwenden, bspw. eine Mindestzeichenanzahl oder das Vorkommen bestimmter Teile (bspw. einer Hausnummer)

    TEL
    Suchmuster:
    ?
    Erklärung:

    • Sollte mindestens x Zahlen beinhalten. (Welche ist die kürzeste Nummer die Ihr kennt? Mit Vorwahl!)

    112

    ~JJ

    1. TEL

      • Sollte mindestens x Zahlen beinhalten. (Welche ist die kürzeste Nummer die Ihr kennt? Mit Vorwahl!)
        112

      Ist das dein ernst?

      Canon

      1. TEL

        • Sollte mindestens x Zahlen beinhalten. (Welche ist die kürzeste Nummer die Ihr kennt? Mit Vorwahl!)
          112
          Ist das dein ernst?

        Hm, wenn ich nochmal drüber nachdenke... 69 vielleicht?

        1. TEL

          • Sollte mindestens x Zahlen beinhalten. (Welche ist die kürzeste Nummer die Ihr kennt? Mit Vorwahl!)
            112
            Ist das dein ernst?
            Hm, wenn ich nochmal drüber nachdenke... 69 vielleicht?

          Die Feuerwehr wird sich auch bestimmt irgendwo so im Internet Anmelden. Also Leute.. Man kann auch jedes Thema platt reden.

          Canon

          1. TEL

            • Sollte mindestens x Zahlen beinhalten. (Welche ist die kürzeste Nummer die Ihr kennt? Mit Vorwahl!)
              112
              Ist das dein ernst?
              Hm, wenn ich nochmal drüber nachdenke... 69 vielleicht?
              Die Feuerwehr wird sich auch bestimmt irgendwo so im Internet Anmelden.

            Du hast nach der kürzesten tel.nr. gefragt, die ich kenne.

            Also Leute.. Man kann auch jedes Thema platt reden.

            Spaß beiseite.

        2. Hello,

          Hm, wenn ich nochmal drüber nachdenke... 69 vielleicht?

          Also 69 sollte sochn ein wenig länger dauern!

          *scnr*
          Ein harzliches Glückauf

          Tom vom Berg

          --
          Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
    2. Hello,

      http://de.php.net/manual/de/function.empty.php

      empty() ist ungeeignet, wenn der Parameter auch 0 als gültigen Wert enthalten darf.

      besser ist dann

      if (isset($_POST[$fieldname]) and strlen(trim($_POST[$fieldname])) > 0)
         {
            ##OK
         }

      Ich habe bisher auch noch keinen Namen gesehen, der kürzer als zwei Zeichen ist.
      Allerdings kenne ich mich nicht mit chinesischen Schriftzeichen o.ä. aus. Da mag das dann wieder anders sein.

      Ein harzliches Glückauf

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
      1. Hi TOM!

        Allerdings kenne ich mich nicht mit chinesischen Schriftzeichen o.ä. aus. Da mag das dann wieder anders sein.

        Ja genau, da heist man schon mal "bo" oder "su" :) ABER WER HEISST DENN SCHON "a" oder "c"? :)

        Canon

        1. Mahlzeit Canon,

          Ja genau, da heist man schon mal "bo" oder "su" :) ABER WER HEISST DENN SCHON "a" oder "c"? :)

          Keine Ahnung. Aber ich kenne nicht alle 8 Milliarden(?) persönlich ... Du etwa?

          MfG,
          EKKi

          --
          sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        2. Hallo.

          Ja genau, da heist man schon mal "bo" oder "su" :) ABER WER HEISST DENN SCHON "a" oder "c"? :)

          Vorname: I
          Nachname: I
          Außerdem sind I in Korea und È in China gängige Personennamen, wobei letzterer sich von der gleichnamigen Bezeichnung der Provinz um Wuhan ableitet. Desweiteren gibt es anderswo Ortschaften oder Provinzen namens U und Å, letztere immerhin mindestens vier mal.
          Diese Liste erhebt keinen Anspruch auf Vollständigkeit.
          MfG, at

          1. Vorname: I
            Nachname: I

            Das ist doch unglaublich :-D

            Canon

      2. http://de.php.net/manual/de/function.empty.php
        empty() ist ungeeignet, wenn der Parameter auch 0 als gültigen Wert enthalten darf.

        Das sollte bei den angefragten Infos nicht vorkommen.

        besser ist dann

        Jaja, hast recht.

        Ich habe bisher auch noch keinen Namen gesehen, der kürzer als zwei Zeichen ist.

        Im asiatischen Raum möglich.

        ~JJ

  4. Hallo!

    Ich möchte mit diesem Thread schlicht und einfach die beliebtesten Preg_match-Ausdrücke/Suchmuster sammeln für die wichtigsten Felder in Web-Formularen:

    Warum? Zu faul zum selbst schreiben? ^^0

    IMHO würde ich bis auf die E-Mail überhaupt nichts prüfen. Oder besser nur, dass die Felder nicht leer sind. Selbst Telefonnummern kann man so schreiben "555-Shoe" oder "555-RGNF" oder ... oder halt "5557463"...

    Solange du keine Vorgaben machst, kannst du nicht wirklich prüfen.
    Bei (Firmen-)(Eigen-)(Künstler-)Namen schon gar nicht, die halten sich nämlich nicht an Vorschriften und sind trotzdem gültig.
    Wenn du Vorgaben machst, weißt du auch was dein preg_match() finden soll, musst es nur noch aufschreiben.

    Ein nettes Tool zum Testen von RegExp hab ich auf http://www.regenechsen.de/ verlinkt gefunden.
    In einem Feld trägt man seine RegExp ein, in dem anderen Feld einen String.
    Trifft die RegExp auf den String wird dieser farbig markiert, einzelne Gruppierungen kann man sich extra anzeigen lassen etc. Find ich ziemlich gut und einfach zu bedienen. Vielleicht kennt es jemand noch nicht und kann es gebrauchen.

    Grüße, Matze

    1. Selbst Telefonnummern kann man so schreiben "555-Shoe" oder "555-RGNF" oder ... oder halt "5557463"..

      Kann man?
      oft kannst du [b] [\b] schreiben. Aber valides HTML ist es nicht.

      _Darf man_ ist eine Geräteabhängige Ausnahme.
      Mein Gerät sagt mir, dass Telefonnummern der ganzen Welt ausschliesslich mit Eingaben von [0-9]+ zu erreichen sind.
      Und genau diese minimalbedingung _darf ich_ in einem Formularfeld anwenden.
      Aus freundlichkeit werden ich ein Paar Formatierungszeichen zulassen.

      $telnum =~ s/[^\d]//g;

      mfg Beat

      --
      Selber klauen ist schöner!
      1. Hallo!

        Und genau diese minimalbedingung _darf ich_ in einem Formularfeld anwenden.
        Aus freundlichkeit werden ich ein Paar Formatierungszeichen zulassen.

        Und wenn der Eintragende eine Nummer einträgt, die zwar gültig aber nicht seine eigene ist? Also wozu etwas prüfen, was nicht prüfbar ist? Von mir aus kann er da "leck mich" rein schreiben, dass ist genauso gültig und individuell wie 110. So kann man mit jedem Feld verfahren und ein Fake abschicken. Der User der seine Daten ernsthaft übermitteln will tut das auch und da lasse ich ihm gern die Wahl zwischen 555-Shoe oder ebend 5557463.

        Das Thema hatte ich erst letztens mit Vinzenz als es darum ging Datumsformate in der Form TT.MM.YYYY oder YYYY.MM.TT zuzulassen. Die einfachste Lösung bleibt beide Varianten zu berücksichtigen.

        Was man noch prüfen könnte, wäre die Sinnhaftigkeit eines Strings.
        Z.B. filtern nach "abcdefg", "gfedcba", "123456", "654321", "aaa", "111", String A darf nicht oder muss String B entsprechen etc.

        Auch dazu hatte ich mal einen Treat eröffnet und eine Funktion gezeigt, die so etwas berücksichtigt. Hab nur keine Lust jetzt zu suchen^^

        "String Sinnhaftigkeit prüfen" sollten als Suchbegriffe fürs Archiv reichen.

        Grüße, Matze

        1. Und genau diese minimalbedingung _darf ich_ in einem Formularfeld anwenden.
          Aus freundlichkeit werden ich ein Paar Formatierungszeichen zulassen.
          Und wenn der Eintragende eine Nummer einträgt, die zwar gültig aber nicht seine eigene ist? Also wozu etwas prüfen, was nicht prüfbar ist? Von mir aus kann er da "leck mich" rein schreiben, dass ist genauso gültig und individuell wie 110.

          Sagen wir so: Du gibst soeben ein persönliches Datum, mit welchem der Auswerter deiner Angabe eine Entscheidung treffen kann. Je nach deinem "Ätsch Faktor" macht er deinem "Ätsch" gegenüber den Laden dicht.

          Ich halte es bei Telefonnummern sinnvoll eine 1 gegen ein I oder L beziehungsweise ein o gegen eine 0 zu validieren. Aus reiner Freundlichkeit.

          So kann man mit jedem Feld verfahren und ein Fake abschicken.

          Können ja. Darauf muss ein Auswerter vorbereitet sein.
          Aber er kann Nonsense erkennen. Das macht ja jeder bei seinem Gästebuch.

          Der User der seine Daten ernsthaft übermitteln will tut das auch und da lasse ich ihm gern die Wahl zwischen 555-Shoe oder ebend 5557463.

          Das ernsthafte Bemühen sollte hilfreich unterstützt werden. Hier sehe ich den Sinn der Validierung.

          Das Thema hatte ich erst letztens mit Vinzenz als es darum ging Datumsformate in der Form TT.MM.YYYY oder YYYY.MM.TT zuzulassen. Die einfachste Lösung bleibt beide Varianten zu berücksichtigen.

          Ja, aber das heisst nicht, dass jede Angabe ein valides Datum ergibt.
          Die Dringlichkeit zur Validierung ist proportional zur Anwendung und die Erlaubnis von Format-Alternativen ist eher eine willkommene Option, die hilft in der Kommunikation.

          mfg Beat

          --
          Selber klauen ist schöner!
          1. Hallo Beat!

            Sagen wir so: Du gibst soeben ein persönliches Datum, mit welchem der Auswerter deiner Angabe eine Entscheidung treffen kann. Je nach deinem "Ätsch Faktor" macht er deinem "Ätsch" gegenüber den Laden dicht.

            Ähm sorry da komm ich grad nicht mehr mit.

            Bei Datumsangaben reicht es die 4 stellige Jahreszahl zu kennen. Die Position der Jahreszahl lässt auf das Format schlussfolgern. Durch das voranstehende oder folgende Zeichen kann man auf das Trennzeichen schließen. Anhand dessen kann man dann die anderen Teile des Datums auswerten und Monate > 12, oder Tage > 29 wenn Monat Februar o.ä. ausschließen. Dafür brauch ich aber keine RegExp. Zumindest würde ich es beim ersten Gedanken anders lösen.

            Ich halte es bei Telefonnummern sinnvoll eine 1 gegen ein I oder L beziehungsweise ein o gegen eine 0 zu validieren. Aus reiner Freundlichkeit.

            Spontan fallen mir zu Telefonnummern folgende Zeichen ein Leerzeichen, +, [0-9], [a-zA-Z], -, / aber wer weiß was ein Chinese der in Bayern wohnt noch alles gewohnt ist und deshalb verwendet. Und warum willst du Buchstaben gegen Zahlen validieren? Du meinst die Nummer wieder in Zahlen auflösen?
            Das hat IMHO nicht viel mit einer Prüfung zu tun sondern geschieht lediglich zum Nutzen des Empfängers der Nummer solange der mit Zahlen besser als mit Buchstaben klar kommt.

            Oder reden wir grad aneinander vorbei? oÔ
            BTW ein o entspräche der 6 - siehe "Shoe" -> 7463 ;)

            So kann man mit jedem Feld verfahren und ein Fake abschicken.
            Können ja. Darauf muss ein Auswerter vorbereitet sein.
            Aber er kann Nonsense erkennen. Das macht ja jeder bei seinem Gästebuch.

            Nö, ich nicht. Ich fange Spam-Bots ab, mehr nicht. Wenn ich dem User verbieten würde sich "1234" zu nennen, müsste ich auch "Ich", "Ich auch" und ähnlichen schwachsinn unterbinden. Das wäre aber eine Sisyphosarbeit.

            Woran erkennst du denn Nonsense? Höchstens bei der E-mailadresse und das die einigermaßen geprüft werden sollte, da sind wir uns alle einig.

            Grüße, Matze

            1. Woran erkennst du denn Nonsense? Höchstens bei der E-mailadresse und das die einigermaßen geprüft werden sollte, da sind wir uns alle einig.

              Falls ICH ein Formular zum befüllen mit einer Telefonnummer anbiete, welches anderen erlaubt MIR ihre Telefonnummer anzugeben, so müssen sie es in einer Form ausfüllen, die es MIR erlaubt, diese Telefonnummer sinnvoll zu gebrauchen.
              Da kann mir dein Natel-Code und Fachchinesisch den Arsch ab.

              Nonsense ist bezugslose Theorie.
              Es kommt auf den Kontext darauf an.

              mfg Beat

              --
              Selber klauen ist schöner!
              1. Falls ICH ein Formular zum befüllen mit einer Telefonnummer anbiete, welches anderen erlaubt MIR ihre Telefonnummer anzugeben, so müssen sie es in einer Form ausfüllen, die es MIR erlaubt, diese Telefonnummer sinnvoll zu gebrauchen.

                So Siehts aus und das mit den schon genannten Zeichen!

                Canon

              2. Hello,

                Falls ICH ein Formular zum befüllen mit einer Telefonnummer anbiete, welches anderen erlaubt MIR ihre Telefonnummer anzugeben, so müssen sie es in einer Form ausfüllen, die es MIR erlaubt, diese Telefonnummer sinnvoll zu gebrauchen.

                Das ist äußerst arrogant.
                Du implizierst, dass Du alle üblichen bzw. möglichen Formate kennen würdest.
                Das muss aber keinesfalls so sein.

                Und damit könntest Du dann äußerst interessante neue Kontakte unterdrücken.

                Der Weg kan nur ein anderer sein:

                Alle automatisch erkannten Formate in die automatische Verarbeitung weitergeben. [*]
                Alle nicht automatisch erkannten Formate auf einen "Handarbeitsplatz" weiterleiten.

                [*] Mit welcher Sicherheit "automatisch" auf Richtigkeit[tm] erkannt wrden kann, hängt sicherlich von den bereits vorhandenen Datenpools ab.

                Ein harzliches Glückauf

                Tom vom Berg

                --
                Nur selber lernen macht schlau
                http://bergpost.annerschbarrich.de
              3. Hallo.

                Falls ICH ein Formular zum befüllen mit einer Telefonnummer anbiete, welches anderen erlaubt MIR ihre Telefonnummer anzugeben, so müssen sie es in einer Form ausfüllen, die es MIR erlaubt, diese Telefonnummer sinnvoll zu gebrauchen.
                Da kann mir dein Natel-Code und Fachchinesisch den Arsch ab.

                Eben, und "vormittags:", "nach 16 Uhr", "(nach Hänschenklein fragen)" etc. ist kein Fachchinesisch, sonder eine sinnvolle Information.

                Nonsense ist bezugslose Theorie.
                Es kommt auf den Kontext darauf an.

                Dumm nur, wenn man den nicht artikulieren darf.
                MfG, at

        2. Hallo.

          Was man noch prüfen könnte, wäre die Sinnhaftigkeit eines Strings.
          Z.B. filtern nach "abcdefg", "gfedcba", "123456", "654321", "aaa", "111", String A darf nicht oder muss String B entsprechen etc.

          Damit wünsche ich dir viel Glück. Ich kenne beispielsweise mehrere ABC-Straßen, die man so gegebenfalls ausfiltert, während ich dich anders vera...lbere. Und weshalb man Menschen für leicht zu merkende Telefonnummern bestrafen sollte, erschließt sich mir ebenso wenig.
          MfG, at

          1. Hallo at!

            Was man noch prüfen könnte, wäre die Sinnhaftigkeit eines Strings.
            Z.B. filtern nach "abcdefg", "gfedcba", "123456", "654321", "aaa", "111", String A darf nicht oder muss String B entsprechen etc.

            Damit wünsche ich dir viel Glück. Ich kenne beispielsweise mehrere ABC-Straßen, die man so gegebenfalls ausfiltert(...)Und weshalb man Menschen für leicht zu merkende Telefonnummern bestrafen sollte, erschließt sich mir ebenso wenig.

            Mir auch, deshalb ging es mir dabei eher um eine einfache Prüfung von z.B. Passwortfeldern. Ein Passwort welches "1234" lautet möchte ich unter Umständen ablehnen. Benutzernamen evtl. auch in bestimmten Fällen.

            Grüße, Matze

            1. Hallo.

              Ein Passwort welches "1234" lautet möchte ich unter Umständen ablehnen. Benutzernamen evtl. auch in bestimmten Fällen.

              Ich weiß nicht, wie du das privat handhabst, aber bei mir funktioniert das folgendermaßen: Ich verwende eine Reihe von Benutzernamen für unterschiedliche Zwecke sowie eine kleine Reihe von Passwörtern. Das hat für mich den Vorteil, mir nicht zu viele Kombinationen merken zu müssen.
              Wenn ich mich nun irgendwo anmelden möchte, aber keiner meiner bisherigen Namen oder keines meiner bisherigen Passwörter anerkannt wird, melde ich mich eben nicht an.
              Da "1234" nicht zu meinen Favoriten gehört, hätte ich in deinem Beispiel zwar nichts zu befürchten, aber es zeigt sich hier doch, dass man den Nutzer nicht unnötig bevormunden sollte. Und ist "12345" wirklich sicherer? Und wo ziehe ich dann die Grenze?
              Wenn ein Nutzer nur seine eigene Privatsphäre gefärdet, indem er seine E-Mails mit "1234" oder Passwort = Benutzername abrufen kann, ist das meiner Meinung nach in erster Linie seine eigene Entscheidung. -- Anders sieht die Sache natürlich aus, wenn die Sicherheit des gesamten Systems davon abhängt, auch wenn dieser Umstand ohnehin vermieden werden sollte.
              Und es mag abstrus klingen, aber ich habe auch ein besseres Gefühl dabei, wenn ein System meine Angaben einfach schluckt. Bei einer eigehenden Analyse frage ich mich unwillkürlich, was das System noch alles mit meinen Daten macht, statt sie einfach unbesehen wegzuschließen.
              MfG, at

  5. Mahlzeit Canon,

    Jeder von uns kennt das.
    Pflichtfelder in Web-Formularen.

    Ja. Das bedeutet, diese müssen ausgefüllt werden. Mit was, spielt erstmal keine Rolle bei der Definition als "Pflichtfeld".

    Was Du meinst, ist eine Validitäts- bzw. Gültigkeitsprüfung für die eingegebenen Werte.

    NAME
    Suchmuster:
    ?
    Erklärung:

    • Sollte mehr als ein Zeichen beinhalten

    Genauer: sollte nicht leer sein und nicht nur aus [:blank:] bestehen. Alles andere ist Humbug.

    • Ansonsten ne Heikle Sache mit Sonderzeichen usw

    Eben, deswegen sollte man derartige Prüfungen auch weglassen.

    STRASSE
    Suchmuster:
    ?
    Erklärung:

    • Sollte einen Punkt beinhalten

    Blödsinn.

    • Buchstaben UND Zahlen

    Was heißt das? KANN Buchstaben und Zahlen enthalten oder MUSS Buchstaben und Zahlen enthalten? Was hat eine Hausnummer überhaupt in der Straßenangabe zu suchen, streng genommen ist sie ein eigenes Datum. IMHO muss auch hier wieder die Prüfung auf "nicht leer und nicht nur Leerzeichen" reichen.

    Anekdote insbesondere dazu: Was meinst Du, wie oft mein Bruder Probleme hat, seine gültige Adresse in überschlaue Webformulare einzugeben? Er wohnt in den "Quadraten" in Mannheim, Adressschema:

    Vorname Nachname
    N 17, 3
    6???? Mannheim

    Viel Spaß beim Überprüfen!

    PLZ
    Suchmuster:
    ?
    Erklärung:

    • Sollte 5-Stellig sein, oder?

    Nein - nur "nicht leer und nicht nur Leerzeichen". Außer Du möchtest lediglich deutsche Postleitzahlen erlauben. Dann solltest Du allerdings auch darauf prüfen, dass nur Ziffern eingegeben werden.

    ORT
    Suchmuster:
    ?
    Erklärung:

    • Sollte keine Zahlen beinhalten, oder?

    Blödsinn. Auch wieder nur "nicht leer und keine Leerzeichen" - oder kennst Du alle Orte der Welt und weißt garantiert, dass es keinen gibt, der nicht eine Ziffer im Namen hat?

    TEL
    Suchmuster:
    ?
    Erklärung:

    • Sollte mindestens x Zahlen beinhalten. (Welche ist die kürzeste Nummer die Ihr kennt? Mit Vorwahl!)

    Blödsinn. Einerseits das bereits angeführte Argument "Vanity" und dann die Geschichte mit den internationalen Formaten, lokalen Besonderheiten, Trennern (+, (, ), /, -, ) und Leerzeichen.

    MOBIL
    Suchmuster:
    Erklärung:

    • Sollte mindestens x Zahlen beinhalten.
    • Ein Gültiges Netz (0171/0172/0151/...)

    Und zukünftige Netze? Ansonsten siehe "TEL".

    EMAIL
    Suchmuster:
    Erklärung:

    • Das wohl umstrittenste Thema -
    • Würde ich aber dennoch gerne hier mit in die Sammlung aufnehmen -

    1. gibt es dazu in diesem Forum aktuelle Threads und solche, die es bereits in beängstigender Anzahl ins Archiv geschafft haben,

    2. weiß die allwissende Müllhalde mehr als genug darüber zu berichten und

    3. ist selbst die simpelste Prüfung (nämlich ob der Inhalt nicht leer ist und mindestens ein @ enthält) umstritten.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Hello,

      Blödsinn.

      Das Ganze halte ich nicht für Blödsinn.
      Es ist schon sinnvoll, auf bestimmte "Datentypen" zu prüfen.

      Das habe ich mal in den Anfängen der "Webclients" in TP programmiert und es war äußerst brauchbar, um dann nachher damit eine DB (BTrieve) zu füttern. Allerdings konnte der Client dafür dann auch schon sinnvolle Eingabehilfen zur Verfügung stellen und hat die Fehler des Users bemeckert, wenn dieser sich zu doof angestellt hat. Die API auf dem Datenbank-Host hatte kaum noch 'was zu tun, da es sich schließlich auch um ein verbindungsorientiertes Protokoll gehandelt hat.

      Das bedeutet aber immer noch nicht, dass keine Manipulationen am Client möglich gewesen wären.

      Ein harzliches Glückauf

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
      1. Mahlzeit Tom,

        Blödsinn.

        Das Ganze halte ich nicht für Blödsinn.
        Es ist schon sinnvoll, auf bestimmte "Datentypen" zu prüfen.

        Wenn Du jetzt sinnvoll zitiert hättest, wüsste ich auch, welches meiner 3 "Blödsinn"s Du meinst.

        Ich behaupte weiterhin, dass keines dieser 3 grundlos dort steht, wo es steht - es geht jeweils um die Intention, den jeweiligen Feldtyp mittels wirklichkeitsfremder "Prüfungen" in ein starres Korsett von teilweise sogar falschen Muster zu zwingen.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. Hello,

          Blödsinn.

          Das Ganze halte ich nicht für Blödsinn.
          Es ist schon sinnvoll, auf bestimmte "Datentypen" zu prüfen.

          Wenn Du jetzt sinnvoll zitiert hättest, wüsste ich auch, welches meiner 3 "Blödsinn"s Du meinst.

          Das war doch Absicht, um Dich ein wenig zu wecken ;-)

          Ein harzliches Glückauf

          Tom vom Berg

          --
          Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
    2. Ola!

      Blödsinn. Auch wieder nur "nicht leer und keine Leerzeichen" - oder kennst Du alle Orte der Welt und weißt garantiert, dass es keinen gibt, der nicht eine Ziffer im Namen hat?

      Es gibt welche. In Deutschland werden z.T. Nummern für Stadtteile verwendet, z.B. steht Waghäusel 1 für Waghäusel-Kirrlach.
      Und Araber verwenden oft Ziffern als Umschrift für Buchstaben, die im lateinischen Alphabet keine Entsprechung haben, z.B. die 3 für ʿAin (ع).

      Ich stimme zu: Die Prüfung auf nicht leer ist die einzige sinnvolle. In einigen Spezialfällen kann (und sollte) man auf bestimmte Werte prüfen, z.B. Zahlen oder Elemente einer Auswahlliste, aber das trifft auf Adreßfelder nicht zu.

      Viele Grüße vom Længlich

      --
      Mein aktueller Gruß ist:
      Portugiesisch
      1. Ola!

        Blödsinn. Auch wieder nur "nicht leer und keine Leerzeichen" - oder kennst Du alle Orte der Welt und weißt garantiert, dass es keinen gibt, der nicht eine Ziffer im Namen hat?

        Es gibt welche. In Deutschland werden z.T. Nummern für Stadtteile verwendet, z.B. steht Waghäusel 1 für Waghäusel-Kirrlach.

        Erstens "macht" man das heut zu Tage nicht mehr so und
        Wenn Ziffern "Verboten" Sind trägt man einfach den Stadtteil ein - Fertig.

        Wenn mir jmd. Ein richtiges BSP. nennt bin ich ruhig :)

        Canon

        1. Mahlzeit Canon,

          Es gibt welche. In Deutschland werden z.T. Nummern für Stadtteile verwendet, z.B. steht Waghäusel 1 für Waghäusel-Kirrlach.
          Erstens "macht" man das heut zu Tage nicht mehr so und

          Achja? Wo steht das? Wer sagt Dir, dass das niemand mehr so macht? Wo ist geregelt, dass man das nicht mehr machen darf?

          Wenn Ziffern "Verboten" Sind trägt man einfach den Stadtteil ein - Fertig.

          Und wenn ich den nun nicht weiß, weil ich die Adresse für irgendjemanden erfassen soll, von dem ich nur einen Briefkopf oder eine Visitenkarte habe?

          Wenn mir jmd. Ein richtiges BSP. nennt bin ich ruhig :)

          Du hast genug richtige Beispiele bekommen. Du hast auch Erläuterungen bekommen, wieso es bei manchen Feldinhalten PRINZIPIELL sinnfrei ist, auf Muster zu überprüfen, da es keine allgemein gültigen Muster gibt. Das jedoch WILLST Du anscheinend nicht verstehen und bist DESHALB noch nicht ruhig ...

          MfG,
          EKKi

          --
          sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
          1. Moin,

            OKOK Ihr habt mich endgültig überzeugt, dass nur die Überprüfung der Email-Adresse sinn macht.

            ...Na gut... Im Endeffekt Sparts Arbeit und Zeit ;)

            Am besten fand ich TOMs Post bei größeren "Aufritten" Die Daten-Flut zu unterteilen in

            a) scheint alles in ordnung zu sein und
            b) da scheint was nicht zu stimmen => Lieber noch mal nachschauen...
            (?t=172829&m=1133579)

            Canon

            1. Moin,

              Wenns überhaupt noch jmd. verfolgt hier meine Lösung zum validieren und überprüfen von $_POST-Variablen

                
              <?  
              function validate_post($string)  
              { # validiert und überprüft einen String auf Vollständigkeit  
               $string = trim($string);  
               $string = htmlspecialchars($string);  
               if ($string != "") return $string;  
               else return false;  
              }  
                
              function return_error($array)  
              { # Gibt die Fehlermeldungen Zurück die in dem Array zuvor übergeben worden sind (Nur für $_POST!)  
               foreach($array as $subarray)  
               {  
                $vpost = validate_post($_POST[ $subarray[0] ]);  
                if (!$vpost) $return_error[] = $subarray[1]; # Überprüfen und ggf. Error Speichern  
                else $_POST[ $subarray[0] ] = $vpost; # Wenn String i.O dann Validierten String Speichern  
               }  
              return $return_error;  
              }  
                
              # Zu Überprüfenden $_POST-Variablen und Fehlermeldungen definieren  
              $errorlist = array(  
              array("test1", "Error für test1"),  
              array("test2", "Error für test2"),  
              array("test3", "Error für test3"),  
              );  
                
              $return_error = return_error($errorlist);  
              if (!$return_error)  
              { # Weiterverarbeitung  
               print "Hier gehts weiter wenn alles i.O. ist";  
               print "zB".$_POST["test1"];  
              }  
              ?>  
                
              <FORM METHOD="POST" ACTION="<?=$PHP_SELF?>">  
              <INPUT NAME="test1"><br>  
              <INPUT NAME="test2"><br>  
              <INPUT NAME="test3"><br>  
              <INPUT TYPE="SUBMIT">  
              </FORM>  
                
              <?  
              if ($return_error)  
              {  
               foreach($return_error as $error)  
               {  
                print "<b>".$error."</B><br>";  
               }  
              }  
              ?>  
              
              
              1. Hello,

                ich sehe hier immer noch nicht den "globalen Ansatz"... ;-)

                Dein System muss wissen:

                1. welche Parameter erwartet werden aus dem Formular und
                  1b. welche ggf. automatisch ergänzt werden müssen (Radios, Checkboxen, ...)
                  2. in welche Datentypen diese Parameter konvertiert werden sollen und
                  3. was zu tun ist, wenn dies nicht funktioniert
                  4. welche Fehlermeldungen dazugehören
                  5. wie die Parameter in HTML darzustellen sind
                  6. welche obligatorisch sind und welche leer zurückkommen dürfen
                  7. welches die Wertebereiche für die Paramterwerte sind
                  9. welches die Längen-/Breitenbeschränkungen für die Paremeter sind
                  10. was zu tun ist, wenn mehr Parameter als erwartet gesendet werden
                  11. ...

                12. Steuerfluss -> Buttons erkennen und settzen
                  13. Formulare schachteln in der Ablaufsteuerung und das Hin- und Herschalten
                      zwischen diesen ermöglichen
                  14. Mehrfachaufruf eines Formulares abfangen

                usw.

                Auf Dein Problem reduziert, würde ich eine formale Prüfung
                also vorschalten, erst danach kann eine inhaltliche Prüfung folgen.

                Das Ganze schreit irgendwie nach einem Objektmodell.

                Ich habe es mal als inzwischen riesigen Array-Klotz angefangen.
                Irgendwann wird das unübersichtlich.

                Ein harzliches Glückauf

                Tom vom Berg

                --
                Nur selber lernen macht schlau
                http://bergpost.annerschbarrich.de