Kann Array Werte nicht abfragen bei PREG_OFFSET_CAPTURE

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

  • Kann Array Werte nicht abfragen bei PREG_OFFSET_CAPTURE

    Hallo,

    Ich hoffe sehr, dass ihr mir helft. Ich versuche auf ein mit preg-match erstelltes Array zuzugreifen. Es funktioniert einfach nicht. Irgendwie kann ich die Arrayelemente einfach nicht ansprechen.

    Der Code

    if (preg_match_all("/<$tagVisible/",$zeileTest, $treffer, PREG_OFFSET_CAPTURE)){
    foreach ($treffer[0] as $key => $value) {
    echo $treffer[0][$key][1];
    echo $treffer[0][$key][0];

    }
    }



    Durch das print_r($treffer); gibt er mir folgendes aus:


    Array
    (
    [0] => Array
    (
    [0] => Array
    (
    [0] => 40
    )

    [1] => Array
    (
    [0] => 69
    )

    [2] => Array
    (
    [0] => 89
    )

    [3] => Array
    (
    [0] => 109
    )

    [4] => Array
    (
    [0] => 159
    )

    )

    )

    Wenn ich aber dann ganz normal die Werte des Arrays abfragen will mit dem "echo $treffer[0][0][0];" oder "echo $treffer[0][$key][0];" gibt er mir nichts zurück. Einfach nichts. Schon komisch, da programmiert man seit Jahren php und dann scheitert an so einem kleinen Problem.

    Hilfe.

    Franz
    Zuletzt geändert von Franz2; 24.08.2005, 14:08.

  • #2
    Re: Kann Array Werte nicht abfragen bei preg_match mit PREG_OFFSET_CAPTURE

    fehlermeldungen?
    error_reporting auf E_ALL gestellt?

    wieso versuchst du auf $treffer[0][$key][1] zuzugreifen? in deinem beispiel-array sehe ich auf der dritten ebene nirgends ein element mit dem index 1.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Ich habe dies nur versucht weil ich folgendes gelesen habe im php manual. Verzweifelter letzter Versuch

      Wenn dieses Flag gesetzt ist, wird mit jeder gefundenen Übereinstimmung der dazugehörige Versatz in der Zeichenkette zurückgegeben. Beachten Sie, dass dies die Rückgabewerte in einem Array dahingehend ändert, dass jedes Element ein Array ist, das aus der übereinstimmenden Zeichenkette als Element 0 und deren Stelle in der durchsuchten Zeichenkette als Element 1 besteht. Dieses Flag steht seit PHP 4.3.0 zur Verfügung.
      Ich habe display_errors auf on und error_reporting auf E_All. Es gibt mir keine Fehlermeldungen aus.

      Kommentar


      • #4
        hm, und wo sind in deinem beispielarray die "treffer"?
        gibt dein dynamischer ausdruck überhaupt irgendwelche teile zurück?
        was gibt er ohne dieses flag zurück?
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Mit dem preg_match suche ich nach bestimmten tags innerhalb einer Codezeile html code.

          zum beispiel
          Die Zeile html:
          <div style="visibility:hidden"><div adsa>asdf</div><div adsa>asdf</div><div adsa>asdf</div>www.bla.ch </div> <div></div> </p>

          Wenn ich dann das treffer-array mit dem Namen $treffer ausgebe erhalte ich das:

          Array
          (
          [0] => Array
          (
          [0] => Array
          (
          [0] => 40
          )

          [1] => Array
          (
          [0] => 69
          )

          [2] => Array
          (
          [0] => 89
          )

          [3] => Array
          (
          [0] => 109
          )

          [4] => Array
          (
          [0] => 159
          )

          )

          )


          Demnach sollte ich mit "echo $treffer[0[0][0]" den Wert 40 erhalten. Erhalte ich aber nicht. Ist doch unmöglich sowas.
          Zuletzt geändert von Franz2; 11.10.2005, 13:43.

          Kommentar


          • #6
            Original geschrieben von Franz2
            zum beispiel
            Die Zeile html:
            und suchausdruck dazu?
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Sorry.

              Die Variable die eingesetzt wird ist:
              $tagVisible="div";

              Kommentar


              • #8
                Du bekommst nichts angezeigt, weil deine Treffer alle "<div" enthalten. Die sind da, aber dein Browser versucht das zu interpretieren.

                Da hilft auch kein <pre> vor print_r(). Schau aber mal in den Quelltext der Seite, die eigentliche Ausgabe von print_r() ist folgende:
                Code:
                Array
                (
                    [0] => Array
                        (
                            [0] => Array
                                (
                                    [0] => <div
                                    [1] => 0
                                )
                
                            [1] => Array
                                (
                                    [0] => <div
                                    [1] => 31
                                )
                
                            [2] => Array
                                (
                                    [0] => <div
                                    [1] => 51
                                )
                
                            [3] => Array
                                (
                                    [0] => <div
                                    [1] => 71
                                )
                
                            [4] => Array
                                (
                                    [0] => <div
                                    [1] => 117
                                )
                
                        )
                
                )
                Nun sollte auch alles klar sein.

                Kommentar


                • #9
                  Vielen Dank für deine Hilfe. endlich funktioniert es.

                  Sowas, dass dies mit pre nicht angezeigt wird. Man lernt jeden Tag neues.

                  Grüsse
                  Franz

                  Kommentar

                  Lädt...
                  X