RegEx, Pattern soll auf größtmöglichen Bereich passen.

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

  • RegEx, Pattern soll auf größtmöglichen Bereich passen.

    Hi!

    Ich habe ein Problem, für das ich noch keine Lösung gefunden habe. es geht um die verschachtelung von Blöcken:

    <blocka>ahsdg<blockb>ghgh</blockb>kjhjhj</blocka>

    wenn ich das jetzt durch meine pregmatch laufen lasse

    $pattern = "/<block(.*?)>(.*?)<\/block(.*?)>/si";
    preg_match_all($pattern,$this->output,$ma);

    wird der innere block also b leider vor dem block a gefunden. ich möchte aber nur den äußeren, sprich a finden, alles was dazwischen ist, soll ignoriert werden.

    Kann da jemand helfen? Denke Abraxax benötigt das auch.

  • #2
    moin Tobi,
    wenn ichs richtig verstanden habe willst Du aus dem hier:
    <blocka>ahsdg<blockb>ghgh</blockb>kjhjhj</blocka>
    das bekommen:
    ahsdg<blockb>ghgh</blockb>kjhjhj

    also wenn <blocka> immer so endet </blocka>, will sagen keine weiteren parameter ala <blocka lksjadkj></blocka> enthält sollte
    folgendes pattern funzen:

    $pattern = "/<block(.*?)>(.*?)<\/block(\\1)>/si";

    das Pattern geht aber immer davon aus das der startblock auch wieder geclosed wird

    Wenn ichs falsch verstanden hab dann erklärs nochmal :-)
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      das solltest du richtig verstanden haben. es wird immer gestartet und geclosed. einziger parameter ist das a (bzw. b) was von deinem Pattern ja gematcht wird. ich werds mal ausprobieren. dank dir erstmal!

      Kommentar


      • #4
        So, vielen vielen Dank Mello!

        Auf die Idee mit der Backreferenz am ende des Pattern wäre ich nicht gekommen. Ist ja logisch, dass er da immer das den ersten "start" mit dem ersten "ende" genommen hat. Auch wenn es nicht dazu gehört.

        Klasse!!!

        Kommentar


        • #5
          Alles klar wo geht die Rechnung hin???
          Beantworte nie Threads mit mehr als 15 followups...
          Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

          Kommentar


          • #6
            Natürlich an Abraxax!

            Kommentar


            • #7
              hehe,
              lass mal überlegen das waren 17 Std nachdenken und 20 Sekunden drag and drop plus 10 Sekunden schreiben...
              Wobei das nachdenken natürlich schöpferisch viel wertvoller war als programmieren je sein wird...
              naja weil Ihr es seid mach ich ne Pauschale und geb etwa 75% Mengenrabatt
              sind 1000 EUR Ok?
              Beantworte nie Threads mit mehr als 15 followups...
              Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

              Kommentar


              • #8
                mehr als okay!

                Ich hatte schon mit EUR 2,50 gerechnet!

                Kommentar

                Lädt...
                X