Ankündigung

Einklappen
Keine Ankündigung bisher.

HTML-Code aus bestimmten <div>-tags ausgeben (DOM)

Einklappen

Neue Werbung 2019

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

  • HTML-Code aus bestimmten <div>-tags ausgeben (DOM)

    Hallo Leute! Folgendes Problem:

    Ich habe eine HTML-datei "test.html", die sieht so aus:

    Code:
    <html>
      <body>
        <div class="a">
            text
            <!-- kommentar -->
            <img src="bild.jpg">
            mehr text
        </div>
    
        <div class="a">
            und nochmal text
            <img src="bild.jpg">
        </div>
    
      </body>
    </html>
    und jetzt möchte ich per PHP mit DOM den reinen HTML-Code ausgeben, der zwischen den <div class="a">-Tags steht.

    Ausgabe soll also sein:

    Code:
    text <!-- kommentar --> <img src="bild.jpg"> mehr text
    und nochmal text <img src="bild.jpg">


    Den folgenden Anfang habe ich schon:

    PHP-Code:
    $dom = new DOMDocument();
    @
    $dom->loadHTMLFile('test.html');
    $xpath = new DOMXPath($dom);

    $ergebnisse $xpath->query("//div[@class='a']");
    foreach (
    $ergebnisse as $ergebnis) {

    .. 

    Doch was muss da in die geschweiften Klammern? Ich komm einfach nicht drauf. Weiß jemand weiter? Vielen Dank!


  • #2
    PHP-Code:
     echo $ergebnis 
    vermute ich mal

    Kommentar


    • #3
      hm nee, so einfach ists leider nicht..

      Catchable fatal error: Object of class DOMElement could not be converted to string

      Kommentar


      • #4
        Da ich es auch nicht weiß, ohne es auszuprobieren:
        Code:
        var_dump($ergebnis);
        und Doku lesen.
        http://hallophp.de

        Kommentar


        • #5
          RTFM

          A quick an easy way to get a string representation of any XML value is as follows:

          <?php

          echo $elem->property->__toString();

          ?>
          Quelle: http://php.net/manual/en/class.domelement.php
          Es ist schon alles gesagt! Nur noch nicht von allen! (Karl Valentin)
          Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)

          Kommentar


          • #6
            @asipak: bekomme seltsames ergebnis:

            object(DOMElement)#3 (0) { } object(DOMElement)#4 (0) { }
            oO



            @dennis81: hab ich probiert. erhalte fehlermeldung

            Notice: Undefined property: DOMElement::$property
            Fatal error: Call to a member function __toString() on a non-object

            danke trotzdem schonmal für eure hilfe..

            Kommentar


            • #7
              Du willst ja auch keine property auslesen. Es sei denn echo $elem->innerHTML->__toString(); funktioniert, das weiß ich allerdings nicht.

              Ansonsten einfach mal in den Benutzerkommentaren zu DOMElement nach "innerhtml" suchen, dort findest du verschiedene Ansätze.
              @fschmengler - @fschmengler - @schmengler
              PHP Blog - Magento Entwicklung - CSS Ribbon Generator

              Kommentar


              • #8
                na also der klassische Weg wäre DOMElement->textContent (geerbt von DOMNode) oder DOMElement->firstChild->data (wenn man einen Textknoten erwischt hat).

                PS. innerHTML gehört nicht zum DOM

                Kommentar

                Lädt...
                X