Kosmos: Textmanipulation -- nochmal

Hallo,

ich habe einen String, der zeilenweise in einem Array drinsteht.
Die Form:

bla
foo
abc: Bla Bla
def: bla Bla
def: Bla Bla
def: Bla Bla
xyz: Bla Bla

Jetzt möchte ich, dass ich die Zeilennummer mit dem ersten Auftreten von "def:" erhalte. Das funktioniert so:

for ($i=0; $i<$size; $i++) {
  if (ereg("^($def:)", $array[$i])) {

# mache irgendwas mit $array[$i]

break;
  }
 }

Meine Frage ist nun, wie ich die Zeilennummer des LETZTEN Auftreten von "def:" erhalte. Dabei ist wichtig, dass der oben genannte String dynamisch ist und die Anzahl des Auftretens von "def" so wie die Position variiert.

Wer hilft mir bitte?

Danke,
Kosmos

P.S.: Ich weiß, dass ich euch mit derlei Fragen bisher ziemlich auf den Geist gehe, aber ich finde es super, wie freundlich man hier behandelt wird und wie kompetent die Antworten sind. Bitte habt ein wenig Verständnis für einen Anfänger ;-)      Danke

  1. Hi,

    Meine Frage ist nun, wie ich die Zeilennummer des LETZTEN Auftreten von "def:" erhalte.

    auf das "break" verzichten, die Zeilennummer merken und das "irgendwas" erst nach der Schleife machen.

    P.S.: Ich weiß, dass ich euch mit derlei Fragen bisher ziemlich auf den Geist gehe,

    Tust Du das?

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. auf das "break" verzichten, die Zeilennummer merken und das "irgendwas" erst nach der Schleife machen.

      Irgendwie verstehe ich das nicht so ganz, wie du das meinst.

      Gruß,
      Kosmos

      1. Hi,

        auf das "break" verzichten, die Zeilennummer merken und das "irgendwas" erst nach der Schleife machen.
        Irgendwie verstehe ich das nicht so ganz, wie du das meinst.

        was daran verstehst Du denn nicht?

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. auf das "break" verzichten, die Zeilennummer merken und das "irgendwas" erst nach der Schleife machen.
          Irgendwie verstehe ich das nicht so ganz, wie du das meinst.

          was daran verstehst Du denn nicht?

          Also, angenommen ich befinde mich jetzt in der Bedingung (if (ereg("^($def:)", $array[$i]))), kann ich ja z.B. folgendes machen:

          $zwischenspeicher=$i;

          So, da ich jetzt auf das Break verzichte, ist $zwischenspeicher also die letzte Zeile, in der "def:" am Anfang steht, richtig?

          Nur, jetzt habe ich NUR die letzte Zeile, die erste ist futsch. Vielleicht ist das nicht so rüber gekommen, aber ich brauche SOWOHL die erste ALS AUCH die letzte Zeile.

          Vielen Dank nochmal,
          Kosmos

          1. Hi,

            So, da ich jetzt auf das Break verzichte, ist $zwischenspeicher also die letzte Zeile, in der "def:" am Anfang steht, richtig?

            korrekt.

            Nur, jetzt habe ich NUR die letzte Zeile, die erste ist futsch. Vielleicht ist das nicht so rüber gekommen, aber ich brauche SOWOHL die erste ALS AUCH die letzte Zeile.

            Dann merke Dir zwei Werte. Oder nur einen, und mache bei Bedarf in der Schleife bereits Dein "irgendwas".

            Cheatah

            --
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. Dann merke Dir zwei Werte.

              Ja, daran habe ich auch gedacht, nur das wird schwer möglich sein, denn ich überschreibe die zu speichernden Variablen ja mit jedem Durchlauf.

              also ich meine deine Idee mit:

              for ($i=0; $i<$size; $i++) {
                if (ereg("^($def:)", $array[$i])) {

              $zwischenspeicher=$i;

              break;
                }
               }
              echo $zwischenspeicher;

              funktioniert ja nur aufgrund der Tatsache, dass die Variable $zwischenspeicher bei jedem Durchlauf einen neuen Wert erhält, bis sie schließlich die letzte Zeile innehat.

              Gruß,
              Kosmos

              1. Hi,

                Ja, daran habe ich auch gedacht, nur das wird schwer möglich sein, denn ich überschreibe die zu speichernden Variablen ja mit jedem Durchlauf.

                das darfst Du natürlich nur mit einer machen.

                Cheatah

                --
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
                1. Hi,

                  Ja, daran habe ich auch gedacht, nur das wird schwer möglich sein, denn ich überschreibe die zu speichernden Variablen ja mit jedem Durchlauf.

                  das darfst Du natürlich nur mit einer machen.

                  kannst du mir ein Codebeispiel geben, wie du das meinst?

                  Gruß,
                  Kosmos

          2. hi,

            Nur, jetzt habe ich NUR die letzte Zeile, die erste ist futsch. Vielleicht ist das nicht so rüber gekommen, aber ich brauche SOWOHL die erste ALS AUCH die letzte Zeile.

            wenn $erste_zeile noch leer, dann $erste_zeile = $aktuelle_zeile

            gruss,
            wahsaga