6 Stimmen

PHP DOMNode: wie man nicht nur den Text, sondern auch HTML-Tags extrahiert

Ich versuche, ein Skript zu erstellen, das eine Website durchsucht, um die neuesten Nachrichtenaktualisierungen abzurufen. Leider bin ich auf ein kleines Problem gestoßen, das ich mit meinem begrenzten DOM-Wissen nicht zu beheben scheine.

Die Seite, die ich durchsuchen möchte, ist wie folgt aufgebaut :

Autor
Inhalt in HTML
Datum

Ich kann die benötigten Felder problemlos abrufen, außer dem Inhalt. Mit $td->nodeValue erhalte ich den Inhalt in Textform, während ich ihn in HTML haben möchte (es gibt 'a' Tags darin, 'blockquote', etc.)

Hier ist der Code, den ich habe:

try {
    $html = @ file_get_contents("test.php");
    checkIfFileExists($html);

    $dom = new DOMDocument();
    @ $dom->loadHTML($html);

    $trNodes = $dom->getElementsByTagName("tr");
    foreach ($trNodes as $tr) {

        if ($tr->getAttribute("class") == "color1" || $tr->getAttribute("class") == "color2") {

        $tdNodes = $tr->childNodes;
        foreach ($tdNodes as $td) {

            echo $td->nodeValue . "\n";

        }
        echo "\n";
    }
} catch(Exception $e) {
    echo $e->getMessage();
}

Ich würde es vorziehen, nicht auf eine Bibliothek von Drittanbietern zurückgreifen zu müssen, aber natürlich wird jede Antwort sehr geschätzt, unabhängig davon, ob es sich um eine Bibliothek handelt oder nicht.

Vielen Dank im Voraus.

4voto

Frederic Bazin Punkte 1482

Ersetzen

echo $dom->saveXML($td)  . "\n";

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X