[REGEX] Bedingungen?

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

  • [REGEX] Bedingungen?

    Moin,

    mal wieder ein Problem mit Regular Expressions:

    Und zwar brauche ich eine Art if-Abfrage innerhalb der Expression. Das Ganze soll so aussehen:

    Text(, |(.*?)(§§§)

    Der Ausdruck soll entweder bei "Text, blabla:" oder bei "Text: blabla" matchen. Jetzt gibt es dabei aber ein Problem: An der Stelle, an der bei mir §§§ steht, soll stehen: "Wenn bei $1 ein ', ' gematcht wurde muss hier ein ':' sein, ansonsten nicht". Lässt sich das irgendwie machen?

  • #2
    Code:
    $text = 'soll entweder bei "Text, blabla:" oder bei "Text: blabla" matchen. Jetzt ';
    echo preg_replace("!Text(, |: )blabla!Ue",'str_replace(",",":","\\0")',$text);
    so ?
    Kissolino.com

    Kommentar


    • #3
      Wenn ich deinen Code richtig verstehe ersetzt du einfach alle ":" durch "," bei der Ausgabe. Die Ausgabe soll aber unverfälscht sein, ich will nur, dass die Expression sowohl bei "bla, sfasf, dsad:", als auch bei "blasfasfdsad:" matcht.

      Kommentar


      • #4
        ob du ein str_replace oder eine andere (php)funktion an der stelle aufrufst ist schnuppe .... du kannst dir auch eine eigene funktion zur bearbeitung schreiben ... sie sollte allerdings irgendwas zurückgeben, mit dem preg_replace was anfangen kann ... und nein, ^^ es ersetzt "," durch ":"
        Kissolino.com

        Kommentar


        • #5
          Irgendwie ist mir das noch nicht so ganz klar, kann ich dich mal über ICQ o.ä. sprechen?

          Kommentar


          • #6
            was ist denn daran unklar?
            Code:
            $text = 'soll entweder bei "Text, ,blabla:" oder bei "Text: blabla" matchen. Jetzt ';
            function show($x)
            {
                if(strlen($x) >= 13)
                {
                   return $x . " MATCH";
                }
                else
                {
                   return $x;
                }
            }
            echo preg_replace("!Text(, |, ,|: )blabla!Ue",'show("\\0")',$text);
            probiers mal aus.

            was mir unklar ist, ist die "merkwürdig unterschiedliche" zusammensetzung
            deines textes.

            btw: 1:1 support machen wir hier nicht
            Kissolino.com

            Kommentar


            • #7
              Strlen?
              Das mit "Text" und "blabla" ist natürlich nur ein Beispiel, es kann genauso gut "fjasofhopashfpoiashfpiashfl, asjfhsapfha, sfhaspoihfpashf;mjfpas: Hallo, wie geht's denn so?" lauten.

              Sorry, wenn ich etwas schwer von Begriff bin.

              "btw: 1:1 support machen wir hier nicht "
              > Schade.

              Kommentar


              • #8
                das mit strlen ist ja auch nur ein beispiel ... die funktion könnte ja auch zu etwas anderem dienen ... wenn du das prinzip verstanden hast, solltest du das jetzt auf deinen speziellen fall anwenden können. wenns nicht klappt, kannst du ja deine regex posten ... dann schaun mer mal.
                Kissolino.com

                Kommentar

                Lädt...
                X