reguläre Ausdrücke

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • reguläre Ausdrücke

    Hi,

    Ich möchte mit nem ereg herausfinden ob in einer Variable Sonderzeichen enthalten sind... gibt es da eine globale Definition für?
    Also für alle kleinen Buchstaben kann ich ja [a-z] schreiben. Gibts sowas auch für Sonderzeichen?

    Thx schoma

  • #2
    hmm,

    was sind für dich denn alles Sonderzeichen ?

    Kommentar


    • #3
      In diesem Fall alles bis auf die Buchstaben und die Zahlen

      Kommentar


      • #4
        hmm,

        in diesem Fall würde ich auf Buchstaben und Zahlen testen , geht wohl einfacher

        Kommentar


        • #5
          ja klar aber wenn ich jetzt ereg("[a-zA-Z0-9]", $var); eintippe, dann guckt er ja ob mind. einmal eins von den zulässigen Werten eingetippt wurde. Es soll aber nur aus Buchstaben und Zahlen bestehen... wie mach ich dann das?
          Das ist ja das Problem... bzw. das ist das Problem, wenns nich andersrum geht .ähh.. ja also wie sag ich ihm, das er nur true zurückgeben soll, wenn ALLE Zeichen Buchstaben/Zahlen sind.

          Thhxxxxx

          Kommentar


          • #6
            hmm,

            iss ja nicht gerade meine domäne aber versuchen kann man es ja mal, also ich würd so an die Sache rangehen :

            $true = preg_match("|[a-zA-Z0-9].*|",$durchsuchstring)

            natürlich sind meine regExp. wie imemr ohne garantie !!

            Kommentar


            • #7
              Also wenn du nach .* suchst, gibt er true bei jedem beliebigen Zeichen aus.
              Verbesserungsvorschlag:

              $true = preg_match("|^[a-zA-Z0-9]+$|",$durchsuchstring);

              Was passiert da drin?
              "|^[a-zA-Z0-9]+$|" zeigen ihm, dass das Muster von Anfagn bis Ende der zu durchsuchenden Zeichenkette stehen muss.
              ("|^[a-zA-Z0-9]+$|" sagt ihm, das Muster ist gültig wenn die links stehende Zeichenklasse mindestens einmal oder mehrmals auftaucht.
              Dadurch verhindert man, dass die $true wahr ist, wenn die zu testende Variable komplett leer ist (dann kann er ja kein Zeichen finden).


              Kommentar


              • #8
                hmm,

                dies stimmt so aber nicht .* bedeutet das der [] Ausdrück belieb lang sein kann, nicht mehr und nicht weniger

                Kommentar


                • #9
                  Du irrst

                  Betrachte mal folgendes Beispiel, um deine Aussage zu überprüfen:

                  $durchsuchstring = "aa";

                  $true = preg_match("|[a].*|",$durchsuchstring);
                  echo $true;

                  Er sollte "1" (also wahr) ausgeben.
                  Schön und gut.

                  Probieren wir mal $durchsuchstring = "a";
                  Und danach $durchsuchstring = "aaaaaaaaaaaaaaaaa";
                  Gibt immer wieder "1" aus. Prima?

                  Und dann probieren wir $durchsuchstring = "ab";
                  Hmm. Da gibt er doch schon wieder "1" aus. Aber es steht doch gar kein "b" in der RegExp? Warum macht er das? Kannst es wahlweise auch mit "a%", "a{wzw§$%~§%" probieren, es ist immer wahr.

                  Lösung: "." steht für ein beliebiges Zeichen. Und "*" ist nichts anderes als ein Quantifier, der mir sagt: Kein- oder mehrmals folgt der links davon stehende Ausdruck (egal ob Gruppe, Zeichenklasse oder einzelnes Zeichen).
                  Um die beliebige Länge festzustellen entweder die geschweiften Klammern nehmen ({1, }) oder einfach nur das *.

                  Kommentar


                  • #10
                    if (ereg('^[0-9a-zA-Z]*$', $string)) echo "'$string' enthält keine Sonderzeichen.";

                    Willst du, dass mindestens ein Zeichen enthalten sein soll, dann mach aus dem Sternchen (*) ein Plus (+).
                    mein Sport: mein Frühstück: meine Arbeit:

                    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                    Kommentar

                    Lädt...
                    X