Announcement

Collapse
No announcement yet.

Regular Expression erkennt keine Umlaute!

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Regular Expression erkennt keine Umlaute!

    Hallo,

    Habe bereits tonnenweise Infos über Google und Foren-Suche abgearbeitet, aber keine der "angeblichen" Lösungen funktioniert bei mir!

    Ich habe einen ganz normalen String, in dem Umlaute mit voran- und dahinter folgendem Leerzeichen.
    Nun ist die Filterung dieser Einzelbuchstaben im Prinzip kein Problem.
    Ich verwende preg_match_all() dazu, diese zu filtern.

    Jedoch findet er die Umlaute nicht?!
    Mir wurden auf meiner Suche einige an Informationen gegeben, die plausibel klangen und scheinbar auch bei einigen läuft.
    Bei mir leider nicht!

    Beispiel:
    Ein Lösungsansatz war, dem PRCE-Pattern ein Modifier u für unicode (UTF-8) mitzugeben.
    FEHLER: preg_match_all() findet gar nix mehr!
    Nichtmal mehr die Standard-Buchstaben (A-Z).

    Auch mit utf8_decode() bzw. utf8_encode() habe ich nichts erreicht!

    Ist es wirklich so problematisch, Umlaute mit preg_match_all() zu filtern?
    Also bitte ich die RegEx-Experten, mir da mal einen Denkanstoß zu geben...

    Danke!

    PS: mb_ereg(), etc. habe ich auch schon probiert.
    PHP rocks!
    Eine Initiative der PHP Community

  • #2
    Hallo,

    also preg_match_all hat prinzipiell keine Schwierigkeiten mit deutschen Umlauten.
    PHP Code:
    preg_match_all('/([öäüß])/''Schöne Grüße'$hits); 
    findet bei mir ö, das ü und auch das ß.

    Sowohl der zu durchsuchende Text als auch der reguläre Ausdruck müssen jedoch Zeichensatzmäßig zueinander passen.
    Hier werden z.B. KEINE Umlaute gefunden:
    PHP Code:
    $text utf8_encode('Schöne Grüße');
    preg_match_all('/([öüäß])/'$text$hits);
    print_r($hits); 
    Hier dagegen schon:
    PHP Code:
    $text  utf8_encode('Schöne Grüße');
    $regex utf8_encode('öüäß');
    preg_match_all('/(['.$regex.'])/u'$text$hits);
    print_r($hits); 
    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Hallo Falk. Danke für die Antwort und die Beschreibung!

      So hat das bei anderen angeblich auch funktioniert, jedoch nicht bei mir...
      Ich hab' mal anhand Deiner Ausführungen dieses Beispiel:
      PHP Code:
      $text utf8_encode("B Ü R G E R M E I S T E R");
      $regex_utf8 utf8_encode("ÄÖÜß");
      preg_match_all("/[A-Z".$regex_utf8."]\b/u",$text,$treffer);
      print_r($treffer); 
      hat bei mir folgende Ausgabe:
      Code:
      Array(
      [0] => B
      [1] => R
      [2] => G
      [3] => E
      [4] => R
      [5] => M
      [6] => E
      [7] => I
      [8] => S
      [9] => T
      [10] => E
      [11] => R
      )
      ...findet also kein Ü

      Is doch aber exakt das was Du im letzten Code Deiner Antwort meintest, oder nicht?
      PHP rocks!
      Eine Initiative der PHP Community

      Comment


      • #4
        Hallo Arne,

        wenn ich deinen PHP-Code per Copy und Paste auf meinem System ausführe, dann bekomme ich folgende Ausgabe:
        Code:
        Array
        (
            [0] => Array
                (
                    [0] => B
                    [1] => Ü
                    [2] => R
                    [3] => G
                    [4] => E
                    [5] => R
                    [6] => M
                    [7] => E
                    [8] => I
                    [9] => S
                    [10] => T
                    [11] => E
                    [12] => R
                )
        
        )
        Also mit Ü!
        Ist dein PHP mglws. gegen eine externe PCRE-Bibliothek gelinkt (--with-pcre-regex[=VERZEICHNIS]), die Schwierigkeiten mit Umlauten hat? Ansonsten bin ich hier auch etwas ratlos.

        Gruß Falk
        Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

        Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

        Comment


        • #5
          Verdammt! Hast Recht:
          Code:
          --with-pcre-regex=/usr
          steht in der PHPInfo...
          Kann ich sowas ändern, tauschen, ohne PHP gleich neu aufzusetzen?
          PHP rocks!
          Eine Initiative der PHP Community

          Comment


          • #6
            Hallo Arne,
            Originally posted by Arne Drews View Post
            Verdammt! Hast Recht:
            Code:
            --with-pcre-regex=/usr
            steht in der PHPInfo...
            Kann ich sowas ändern, tauschen, ohne PHP gleich neu aufzusetzen?
            Ich denke mal da hast du schlechte Karten. --with-pcre-regex ist eine Compileroption. Ohne Neuübersetzung deines PHP wird da nichts gehen.

            Gruß Falk
            Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

            Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

            Comment


            • #7
              Naja, is auch nicht so tragisch, denke ich.
              Den Configure kann ich ja mit sämtlichen Parametern übernehmen und passe eben entsprechend den --with-pcre-regex an.

              Danke für Deine Hinweise und Mühen Falk!
              PHP rocks!
              Eine Initiative der PHP Community

              Comment


              • #8
                Auch wenn es schon ein bisschen spät ist, wollte ich noch etwas zu dem Thema beitragen. Ich hatte das selbe Problem wie Arne - keine der Lösungen wollte funktionieren.

                Die Lösung in meinem Fall: Wenn der Charset der Site utf-8 ist, müssen alle Templates und auch das entsprechende Skript, in dem Umlaute vorkommen, utf-8 codiert abgespeichert werden.

                Grüßlies, Stefan

                Comment


                • #9
                  Hi freshman,

                  Hilfen sind immer gerne genommen!
                  Ich arbeite nur mit UTF8-codierten Dateien...

                  Mit ner anderen RegEx gehts...
                  Trotzdem danke für den Hinweis!
                  PHP rocks!
                  Eine Initiative der PHP Community

                  Comment

                  Working...
                  X