Hilfe zu Regulären Ausdrücken

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

  • Hilfe zu Regulären Ausdrücken

    Hallo zusammen,

    ich brauche mal kurz Hilfe.

    Ich benötige einen regulären Ausdruch der auf folgendes zutrifft:
    Eine Zeichenkette, die länger als 32 Zeichen ist aber keine Kommas enthält.

    Ich habe schon flgendes probiert:
    $content2 = preg_replace("#[^,]{32,}#esiS", "replaceme(\"\\0\")", $content2);

    Ich dachte mit der Auswahlnegatation könnte ich "alla außer Komma" bestimmen, dass macht er aber nicht.

    Bitte um Hilfe.


    Grüße, Andi

  • #2
    was ist hiermit?

    ![a-z0-9]{32}!si
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Na es sollen ja auch alle anderen Zeichen erkannt werden !"§$%/()=?;.:-_ usw., nur eben keine Kommas.


      Grüße, Andi

      Kommentar


      • #4
        ich wüsste jetzt spontan auch nicht, wie mal 'alles ausser eines' darstellen kann.

        notfalls kannst du ja die anderen erlaubten zeichen mit in das pattern aufnehmen. das wäre im moment zumindest mein vorschlag.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Code:
          $string = str_replace (",","",$string);
          if (strlen ($string) < 32) { ...
          Manchmal darf man nicht zu sehr auf eine Lösung wie regex-Ausdrücke konzentriert sein.
          Eventuelle Tippfehler bei PHP-Beispielen können durchaus vorkommen, aber es geht um die grundsätzliche Möglichkeit der Anwendung.

          Es war einmal ein Benutzer, der hatte ein Problem mit ... PHP (http://de3.php.net/manual/de/) MySQL (http://dev.mysql.com/doc/mysql/de/) HTML (http://www.selfhtml.org/)

          Wer suchet, der findet: http://www.php-resource.de/forum/search.php
          Immer noch nichts? Dann frag!


          Mit freundlichen Grüßen,
          @4u

          Kommentar


          • #6
            @a4u: Aber manchmal weiß ich schon worauf ich hinaus will, wenn ich explizit einen RegExp suche!

            Denn mein String hat mehrere Textblöcke getrennt durch Kommas. Ist aber nun ein Textblock bis zu einem Komma länger als 32 Zeichen, dann soll dieser entsprechend weiterverarbeitet werden. Darum kann ich nicht einfach die Kommas entfernen!


            Grüße, Andi

            Kommentar


            • #7
              Es gibt -zumindest meines Wissens- keine Möglichkeit, dies mit preg_*-Funktionen zu bewerkstelligen (ich bitte um Korrektur, falls dies falsch ist).

              Eine Möglichkeit wäre somit:

              Code:
              $array = explode (",",$string);
              $i = 0;
              
              foreach ($array as $string)
              {
               if (strlen ($string) > 32)
               {
                 Aufgaben;
                 $array[$i] = $string;
               }
               $i++;
              }
              PS.: Kommas sind denkbar ungeeignete Trennzeichen für Textblöcke - die Nutzung von "|" oder "&" wäre -eigentlich- empfehlenswerter.
              Eventuelle Tippfehler bei PHP-Beispielen können durchaus vorkommen, aber es geht um die grundsätzliche Möglichkeit der Anwendung.

              Es war einmal ein Benutzer, der hatte ein Problem mit ... PHP (http://de3.php.net/manual/de/) MySQL (http://dev.mysql.com/doc/mysql/de/) HTML (http://www.selfhtml.org/)

              Wer suchet, der findet: http://www.php-resource.de/forum/search.php
              Immer noch nichts? Dann frag!


              Mit freundlichen Grüßen,
              @4u

              Kommentar


              • #8
                Ich habe es jetzt so gelößt:

                #([a-zA-Z0-9]|[._-]|@){32,}#

                ...da das Feld sowieso nur E-Mail Adressen enthällt. Habe ich auch erst später gemerkt. Natürlich ist dass dann beliebig um weitere Zeichen zu ergänzen.

                Dank & Grüße,
                Andi

                Kommentar


                • #9
                  das A-Z kannst du dir sparen, wenn du hinter dem # ein i machst...


                  i
                  Dies ist der wohl am meisten gebrauchte Modifier. Bei regulären Ausdrücken wird standardmäßig zwischen Groß- und Kleinschreibung unterschieden - dieser Modifier schaltet dies aus.
                  auch das komma hinter der 32 brauchst du nicht. es sei denn der string soll mindestens 32 zeichen lang sein.

                  {n}
                  Steht für eine Anzahl von genau n Zeichen.

                  Beispiel: /a{6}/

                  Steht für exakt sechs "a".

                  {n,}
                  Steht für eine Anzahl von mindestens n Zeichen

                  Beispiel: /a{1,}/

                  Steht für mindestens ein "a" und ist somit äquivalent zu den Ausdrücken /a/ und /a+/.

                  {n,m}
                  Steht für eine Anzahl von mindestens n, aber höchstens m Zeichen.

                  Beispiel: /a{2,4}/

                  Trifft auf alle Zeichenketten zu, die 2, 3 oder 4 "a" hintereinander haben
                  INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                  Kommentar


                  • #10
                    Original geschrieben von Abraxax
                    das A-Z kannst du dir sparen, wenn du hinter dem # ein i machst...

                    auch das komma hinter der 32 brauchst du nicht. es sei denn der string soll mindestens 32 zeichen lang sein.
                    Ja so ist es, alles was länger als 32 Zeichen ist soll behandelt werden, der Rest nicht, darum auch das Komma hinter der 32.

                    Ist ja nicht so, dass ich keine Bücher hätte

                    Aber trotzdem Danke für die Infos.

                    Grüße, Andi

                    Kommentar


                    • #11
                      Original geschrieben von andik2000
                      Ja so ist es, alles was länger als 32 Zeichen ist soll behandelt werden, der Rest nicht, darum auch das Komma hinter der 32.
                      alles klar... hatte nur den einen satz im thread-first-post nicht mehr so ganz im sinn...
                      Eine Zeichenkette, die länger als 32 Zeichen ist aber keine Kommas enthält.
                      Original geschrieben von andik2000
                      Ist ja nicht so, dass ich keine Bücher hätte
                      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                      Kommentar

                      Lädt...
                      X