Ankündigung

Einklappen
Keine Ankündigung bisher.

regex - pregmatch - string prüfen

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

  • regex - pregmatch - string prüfen

    Hallo ihr,

    ich hätte gedacht, dass es so langsam was wird mit der RegEx Geschichte,
    aber irgendwie bekomme ich das nicht so richtig hin.

    Ich habe in einer Textarea einen ganz normalten Fließtext.
    Dieser wird beim Speichern escaped und auch strip_tags lasse ich
    noch einmal drüber laufen. Nun würde ich aber gerne schon beim
    Speichern checken was da alles so drinsteht und nicht einfach alles
    killen was mir nicht gefällt. Zulassen möchte ich im String jeweils
    nur a-z0-9 alle Umlaute und ß weils beim schreiben von Text eben
    vorkommt, zusätzlich Slash, Komma, Punkt und - sowie Lehrzeichen und
    diese Klammern ().

    Wie macht man das nun am besten? Ich bin mit pregmatch drauf losgegangen, aber irgenwie mag das gar nicht laufen. Zumindest
    wird mir immer erzählt, dass der String fehlerhaft ist.
    Code:
    !preg_match('#^[ a-z0-9äöüß/(),.-]+$#i', $var)
    Was muss man da denn Schönes schreiben?


  • #2
    und so?
    #^[ a-z0-9äöüß\(\),\.\-]+$#i
    aber wenn du der ausdruck als einzig wahre eingabe für textarea betrachtest, dann wirst du doch alles killen.
    schon ein "!" im text und regex stimmt nicht mehr
    Slava
    http://bituniverse.com

    Kommentar


    • #3
      Bei den Umlauten gibt es noch einen Hacken, auch bei Modifer i empfehle ich die Umlaute auch zusätzlich in Großbuchstaben anzugeben.
      Oft werden diese nicht wirklich erkannt, auch nicht wenn Modifer i gesetzt ist.

      Kommentar


      • #4
        Hallo Slava,

        funktioniert leider auch nicht. Da fehlt zwar noch / aber, das ist im
        erstem Feld gar nicht drin, obwohl es da schon anschlägt. Vielleicht habe
        ich da auch irgendwo einen Denkfehler?

        Nun, das sind keine Texte im eigentlichen Sinne.
        Es ist möglich in der Administration eigene Fehlertexte für Eingabefehler im
        Formular zu erstellen. Auf Zeichen wie ! stehe ich da persönlich gar nicht.
        Das sind nur ganz kurze Texte, die nicht das volle "Textpotential" brauchen.
        Gibt es da mit dem "/" was zu beachten als Eingabemöglichkeit?

        Kommentar


        • #5
          sorry ich kann dir kein Tipp geben, da Regex eine sehr preziese Sache ist und braucht auch eine preziese Beschreibung.
          Am bestens gehst du auf die seite von @CIX88 (@CIX88 ich habe dich verraten)
          http://www.regex-tester.de/
          und übst dich bis zum umfallen.
          Slava
          http://bituniverse.com

          Kommentar


          • #6
            Hab nun ein \s mit reingeschrieben und nun läuft es durch. Manchmal sieht man
            den Wald vor lauten Bäumen nicht. Eine kleine Frage hätte ich allerdings noch.
            Wenn man in einer Textarea zum Beispiel so etwas macht:

            Weitere Benachrichtigungen senden an:
            mail@domain.de
            mail@domain2.de

            Dann braucht man die Eingabe nicht mit explode zelegen sondern kann gleich mit
            dem Mehrzeilenmodus durchsuchen. Kann man davon ausgehen, dass da auch
            wirklich immer ein \n ist und es in jedem Fall zeilenweise durchsucht wird oder
            ist das durchaus anfällig. [Browser, Betriebssystem, etc?]

            Kommentar


            • #7
              \s = \t oder \r oder \n oder " "
              und in textarea wird ein zeilen-umbruch OS abhängig gesetzt.
              schau dir auch wrap-Attribut.
              Als Werte sind hier virtual (automatisch umgebrochen aber beim Absenden werden diese Umbrüche nicht mitgesendet), physical (automatisch umgebrochen und beim Absenden werden diese Umbrüche mitgesendet) und off (kein Umbruch - Zeile wird verlängert) möglich.
              garantie bietet dieser atribut aber nicht.
              alles was von aussen kommt muss man als Angriff versuch betrachten.
              Slava
              http://bituniverse.com

              Kommentar


              • #8
                falls du nur simple mails wie die da auswertest kannst du ja ruhig \s verwenden, denn das sollte dann nicht darin vorkommen, weder umbruch noch leerzeichen oder tab. brauchst du einen komplexeren mail-regexpr. schick mir ne pn, hab das zufällig auch gerade heute durchexzerziert (rfcs lesen den halben tag, was für ein spaß)...
                --

                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                --

                Kommentar


                • #9
                  sorry, muss das nochma hochholen, weil ich es auch gern verstehen würde...

                  will zahlen zulassen, also:
                  100
                  100,12
                  1.000.000,13

                  habe aus einem anderen thread diese bedingung gefunden, die meine vorgabe fast erfüllt:

                  #^[0-9]+(?>,[0-9]{2})?$#is

                  1.000,45 --> erfüllt bedingung nicht.

                  wie müsste ich es dann schreiben??

                  noch was: ich würde gerne jedes einzelne zeichen der bedingung (#^[0-9]+(?>,[0-9]{2})?$#is) kapieren, kann ich das wo nachlesen? PHP: preg_match - Manual hat MIR nicht weitergeholfen

                  Kommentar


                  • #10
                    Tutorial für Regex:

                    -> Quakenet/#php Tutorial - de - Reguläre Ausdrücke
                    robo47.net - Blog, Codeschnipsel und mehr
                    | Caching-Klassen und Opcode Caches in php | Robo47 Components - PHP Library extending Zend Framework

                    Kommentar


                    • #11
                      danke! und dann landet man irgendwann darauf, wo wirklich jedes zeichen erklärt wird: Regular expression examples - Wikipedia, the free encyclopedia

                      Kommentar


                      • #12
                        Selfhtml
                        PHP Manual
                        --

                        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                        --

                        Kommentar

                        Lädt...
                        X