Problem mit preg_match()->a-z und bestimmte UNICODE-Zeichen

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

  • #16
    ICH HABS!

    Dank @wahsagas Tipp mit dem UNICODE-ASCII-Umwandlung habe ich es geschafft!

    Zwar nicht direkt so aber durch rumtüfteln hab ich das genau Ergebnis (vorerst würd ich jetzt mal vorsichtshalber sagen)

    Also, für alle die das gleiche Problem haben:

    Bevor es zur Funktion preg_match kommt einfach $text und $pattern utf8_decoden wobei $pattern die Zeichen enthält die vorkommen dürfen!
    Also:

    $pattern = "/^([a-zčćžšđ]){1,}$/iu";

    (sollte euer Editor diese Zeichen nicht darstellen können kann es Notepad darstellen und speichern)

    $text kann UNICODE entahlten also:

    $text = utf8_decode($text);

    und nun alles in die Funktion rein:

    return(preg_match ($pattern,$text));


    Also bei mir klappt das jetzt! Egal ob a-z, A-Z oder č ć ž š đ (auch Gro'buchstaben), alle sind gültig und alles andere eben ungültig...

    @wahsaga, kommst nach Stuttgart hast ein Bier frei bei mir....

    Kommentar


    • #17
      So, jetzt habe ich doch noch ein Problemchen...

      Ich will per preg_match ein Feld auf Gültigkeit von Telefonnummern prüfen.

      Die Telefonnummer kann so aussehen:

      0049711884455
      0049 711 884455
      +49 711 884455
      (+49) 711 884455
      (+49) 711-884455
      (+49) 711/884455
      (+49) 711\884455
      0049 - 711 / 884455

      Also ist das alles erlaubt: [0-9]+-\/() und Leerzeichen.

      Und es sollte natürlich mindestens 5 oder mehr ZAHLEN(also nicht die Zusatzzeichen mitgerechnet) enthalten sein. ([0-9]{5,} ??)

      Nur ist mir immer noch nicht ganz klar wie ich das nun in das Pattern richtig hinbekomme....

      Kommentar


      • #18
        Vielleicht hilft dir das weiter:

        PHP-Code:
        $pattern "/^((0[0-9]+)|(\\(?\\+[1-9]{2}\\)?)){1}( ?[1-9][0-9]+){1}( ?[0-9]{2,})*$/"
        damit prüfe ich nämlich meine Telefonnummern und damit deckst du folgende Varianten ab:

        0049711884455
        0049 711 884455
        +49 711 884455
        (+49) 711 884455

        die restlichen Varianten kannst du durch Anpassung dann relativ einfach umsetzen.

        Ich hoffe, dass dies dir etwas helfen kann.

        Kommentar


        • #19
          Dabke, es hat viel geholfen.....trotzdem bin ich zu blöd um dieses Pattern noch dahingehend umzuändern das es noch '-' beinhalten kann und das die Ländervorwahl vorhanden sein kann aber nicht muss.....

          Ich bin eben ziemlich 'frisch' was PHP & RegEx angeht und mache überhaupt HTML & PHP erst seit ca. 4 Wochen......

          Kommentar


          • #20
            Ich glaub ich hab es:

            $pattern = "/^((0[0-9()]+-)|(\(?\+[1-9()+-]{2}\)?)){1}( ?[1-9()-][0-9-]+){1}( ?[0-9-]{2,})*$/s";

            Ich habe da zwar keine Slash's und Backslash's berücksichtigt (weil der dann denkt das wären modifier) aber das haut auch so hin und ausserdem müsste ich nur noch nachguggen wie man diese Slash's richtig als Nicht-Moidifier angibt....


            Danke die vielmals! Da hab ich echt hilfe benötigt.....

            RegEx ist ein sch...s, aber ist eben das schnellste denk ich mal.......in VB hätte ich eine eigenen (viel zu lahme) Funktion dafür geschrieben (aber da merkt es auch keiner ob es lahm ist oder nicht.. )

            Danke euch allen vielmals!

            Kommentar


            • #21
              \\ wird als backslash behandelt und \/ als slash

              alternativ kannst du einen anderen delimiter als / verwenden, dann musst du da nicht mehr escapen
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #22
                Kann mir einer verraten was hier falsch ist :

                $pattern = "/^([a-zčćžšđ0-9]){5,}$/iu";
                $pattern = utf8_decode($pattern);

                ??

                Sollte prüfen das im Text nur Zeichen incl. bestimmten Sonderzeichen und Zahlen vorhanden sind!

                Er liefert mir aber IMMER FALSE zurück.....

                Bisher ging das komischerweise jedoch auf einem anderen Server......

                Kommentar


                • #23
                  Ach Mensch, sorry, mein Fehler!
                  Und der lag ganz wo anderst.......

                  Tschuldigung nochmal das ich manchmal so voreilig bin! Nur das in diesem Fall es nix mit Eile zu tun hat, sitze schon den halben Tag an diesem blöden Fehler.....

                  Kommentar


                  • #24
                    Hier ist was brandneues seit der neuen PCRE-lib (für die UTF8-Zeichen)
                    http://de3.php.net/manual/de/referen...erence.unicode

                    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                    Wie man Fragen richtig stellt

                    Kommentar

                    Lädt...
                    X