preg_match Klassen auslesen

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

  • preg_match Klassen auslesen

    Hi,
    ich möchte gern aus dem Quelltext(unten) den Text "den Inhalt brauch ich".
    Dazu wollte ich die Funktion preg_match('/<div id="e">.*?<\/div>', $Dateipfadname,$match); nehmen, klappt aber nicht.
    Es wäre schon falls mir jemand helfen könnte

    Code:
    <table class="a" width="900px">
    
    <tr class="b">
    <div>
    <td class="c"><div class="d"><span>blablabla</span></div></td>
    <td class="e"><div> den Inhalt brauch ich</div></td>
    </div>
    </tr>

  • #2
    PHP-Code:
    $text '<table class="a" width="900px">
              <tr class="b">
              <div>
              <td class="c"><div class="d"><span>blablabla</span></div></td>
              <td class="e"><div> den Inhalt brauch ich</div></td>
              </div>
              </tr>'
    ;
    preg_match ('/<td class="e"><div>(.+\w)<\/div><\/td>/'$text$hit);
    print_r($hit); 
    Auf die Schnelle. Und mal völlig davon abgesehen, dass der HTML-Code schlichtweg Müll ist.

    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Wenn ich das auf mein Code anwende gibt er "Array" aus aber nicht das was ich haben wollte ...

      Kommentar


      • #4
        Zitat von benutzer_michi Beitrag anzeigen
        Wenn ich das auf mein Code anwende gibt er "Array" aus aber nicht das was ich haben wollte ...
        Darum habe ich ja auch ein print_r($hit); eingefügt. Ein klein wenig solltest du schon mitdenken. Und wissen, was Arrays sind.

        Peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          klappt nicht .... Der Code sieht so ungfähr aus es gibt also mehr als eine "e"-Klasse und vielleicht noch erwähnenswert, das ich die Daten für preg_match aus eine anderen Datei bekommen hatte mittels file_get_content

          <table class="a" width="900px">

          <tr class="b">
          <div>
          <td class="c"><div class="d"><span>blablabla</span></div></td>
          <td class="e"><div> den Inhalt brauch ich</div></td>
          </div>

          </tr>


          <tr class="b">
          <div>
          <td class="c"><div class="d"><span>...</span></div></td>
          <td class="e"><div> anderer Inhalt </div></td>
          </div>

          </tr>



          <tr class="b">
          <div>
          <td class="c"><div class="d"><span>...</span></div></td>
          <td class="e"><div> wiederanderer Inhalt </div></td>
          </div>

          </tr>

          </table>
          Zuletzt geändert von benutzer_michi; 30.08.2009, 21:15.

          Kommentar


          • #6
            Wenn du ein Problem hast, den Inhalt für das Schreiben in di Datei korrekt zusammenzusetzen - dann verzichte zunächst auf das Schreiben in die Datei, und schaue stattdessen, dass du den Inhalt in einem Textstring korrekt zusammengesetzt bekommst, und lasse dir diesen zur Kontrolle mit echo ausgeben. Wenn du das hingekriegt hast, dann kannst du es anschliessend verwenden, um diesen Textstring in die Datei zu schreiben.

            Und wenn dein Code nicht das tut, was er soll - dann zeige uns deinen Code (bitte erst mal unter Berücksichtigung gerade genannter Vereinfachung der Aufgabe). Nur dann können wir dir sagen, was du falsch machst.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Zitat von benutzer_michi Beitrag anzeigen
              klappt nicht ....
              Gewöhne dir so einen Mist bitte schleunigst ab!

              Und damit meine ich sowohl, Postings, in denen gerade noch etwas ausführlicheres stand, derart zu editieren, als auch "klappt nicht" als "Problembeschreibung" abzuliefern.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Zitat von benutzer_michi Beitrag anzeigen
                klappt nicht .... Der Code sieht so ungfähr aus es gibt also mehr als eine "e"-Klasse und vielleicht noch erwähnenswert, das ich die Daten für preg_match aus eine anderen Datei bekommen hatte mittels file_get_content
                Und anhand welches Kriteriums soll nun die entsprechende Zeile ausgewählt werden? Btw: Mein Code funktioniert auch bei deinem ausführlichen Beispiel. Vorausgesetzt dass "den Inhalt brauch ich" am Anfang steht.

                Peter
                Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                Meine Seite

                Kommentar


                • #9
                  $datei=fopen($Dateinamepfad,'r+');
                  $save=file_get_contents($inhaltderdatei);
                  e[COLOR=Black]cho($save); //Ausgabe zur Kontrolle, klappt
                  [/COLOR] [COLOR=#000000][COLOR=Black]preg_match [/COLOR][COLOR=Black]([/COLOR][COLOR=Black]'/<td class="e"><div>(.+\w)<\/div><\/td>/'[/COLOR][COLOR=Black], [/COLOR][COLOR=Black]$save[/COLOR][COLOR=Black], [/COLOR][COLOR=Black]$hit[/COLOR][COLOR=Black]);
                  [/COLOR][COLOR=Black]print_r[/COLOR][COLOR=Black]([/COLOR][COLOR=Black]$hit[/COLOR][COLOR=#006600][COLOR=Black]); //Ausgabe :"Array()"

                  Müsste er normaler Weise nicht den gesuchten Wert ausgeben ? Die oben genannten Beispiele kann ich ausgeben, wenn ich die auszulesenden Daten nicht in eine externe Datei habe[/COLOR]


                  [/COLOR][/COLOR]
                  Zuletzt geändert von benutzer_michi; 30.08.2009, 21:50.

                  Kommentar


                  • #10
                    Bitte nutze die [php]-Tags, um PHP-Code einzubinden.
                    Eigenes Herumspielen mit [color]-Tags macht Postings kaum lesbarer; und für "normalen" Text deinerseits tut's auch die Defaultfarbe, ohne zusätzliche Formatierung.

                    Zitat von benutzer_michi Beitrag anzeigen
                    Müsste er normaler Weise nicht den gesuchten Wert ausgeben ?
                    Ja (als Element innerhalb des Arrays) - wenn er denn gefunden worden wäre.

                    (Und mit deinem Beispieltext, den du vorhin angegeben hast, passiert bei mir im Test auch genau das.)
                    Zuletzt geändert von wahsaga; 30.08.2009, 21:45.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Zitat von benutzer_michi Beitrag anzeigen
                      $datei=fopen($Dateinamepfad,'r+');
                      $save=file_get_contents($inhaltderdatei);
                      Das ist doppeltgemoppelt. file_get_contents reichts völlig aus. Wie sieht denn nun der Original-Code aus? Gibt es da z.B. Zeilenumbrüche? Wenn ja, dann muss noch ein Modifier angegeben werden:
                      PHP-Code:
                      preg_match ('/<td class="e"><div>(.+\w)<\/div><\/td>/m'$text$hit); 
                      Peter
                      Zuletzt geändert von Kropff; 30.08.2009, 21:50.
                      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                      Meine Seite

                      Kommentar


                      • #12
                        Und anhand welches Kriteriums soll nun die entsprechende Zeile ausgewählt werden?
                        Es sollen alle Elemente des Arrays von der Klasse "e" ausgegeben werden,

                        Kommentar


                        • #13
                          Ich sehe gerade, dass da was nicht stimmt:
                          PHP-Code:
                          $datei=fopen($Dateinamepfad,'r+');
                          $save=file_get_contents($inhaltderdatei); 
                          Was ist denn nun die Datei? $Dateinamepfad oder $inhaltderdatei? Wo werden die Variablen gesetzt?

                          Peter
                          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                          Meine Seite

                          Kommentar


                          • #14
                            Zitat von benutzer_michi Beitrag anzeigen
                            Es sollen alle Elemente des Arrays von der Klasse "e" ausgegeben werden,
                            Dann nimm preg_match_all. Und bitte behalte diese wichtigen Infos nicht für dich.

                            Peter
                            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                            Meine Seite

                            Kommentar


                            • #15
                              Keine Zeilenumbrüche, aber die Tabelle ist noch in eine übergeordnete Tabelle geschachtelt.
                              Er gibt nur "Array()" aus mit der Funktion print_r.

                              Was ist denn nun die Datei? $Dateinamepfad oder $inhaltderdatei? Wo werden die Variablen gesetzt?
                              Das mit der Pfadangabe stimmt schon, weil er die komplette Datei mit echo ausgibt im php-code.

                              Kommentar

                              Lädt...
                              X