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.
        [URL]http://hallophp.de[/URL]

        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
          [I]Es ist schon alles gesagt! Nur noch nicht von allen! (Karl Valentin)[/I]
          [I]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/I]

          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.
              [IMG]https://g.twimg.com/twitter-bird-16x16.png[/IMG][URL="https://twitter.com/fschmengler"]@fschmengler[/URL] - [IMG]https://i.stack.imgur.com/qh235.png[/IMG][URL="https://stackoverflow.com/users/664108/fschmengler"]@fschmengler[/URL] - [IMG]http://i.imgur.com/ZEqflLv.png[/IMG] [URL="https://github.com/schmengler/"]@schmengler[/URL]
              [URL="http://www.schmengler-se.de/"]PHP Blog[/URL] - [URL="http://www.schmengler-se.de/magento-entwicklung/"]Magento Entwicklung[/URL] - [URL="http://www.css3d.net/"]CSS Ribbon Generator[/URL]

              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