Start · Sprachen · PHP · Referenz · tidy_get_html

tidy_get_html

Funktion

Gibt ein <code>tidyNode</code>-Objekt zurück, das den <code>&lt;html&gt;</code>-Wurzelknoten des Tidy-Parsebaums repräsentiert.

seit PHP 5.0.0 Kategorie: string

Signatur

tidy_get_html(tidy $tidy): tidyNode|false

Beschreibung

tidy_get_html() traversiert den internen Parsebaum eines verarbeiteten Tidy-Dokuments und liefert den Knoten zurück, der dem <html>-Element entspricht. Damit erhält man direkten Zugriff auf das eigentliche Dokument-Root-Element, ohne erst den vollständigen Baum von der Dokumentwurzel aus durchlaufen zu müssen.

Die Funktion ist nützlich, wenn man gezielt die Kindknoten des <html>-Elements — also <head> und <body> — untersuchen oder manipulieren möchte. Das zurückgegebene tidyNode-Objekt bietet Eigenschaften wie child, name, value und type für die weitere Navigation im Baum.

Die Funktion ist prozedural und entspricht der objektorientierten Methode tidy::htmlNode(). Beide sind äquivalent; welche Variante man nutzt, ist eine Stilfrage. Die PHP-Tidy-Erweiterung muss installiert und aktiviert sein (üblicherweise über --with-tidy beim Build oder als PECL-Paket).

Parameter

Name Typ Default Beschreibung
$tidy Pflicht tidy Ein zuvor erzeugtes und initialisiertes tidy-Objekt, dessen Inhalt bereits geparst wurde (z. B. per tidy_parse_string() oder tidy_parse_file()).

Rückgabewert

Typ
tidyNode|false
Beschreibung
Gibt das tidyNode-Objekt des <html>-Elements zurück, oder false, wenn kein gültiger Parsebaum vorhanden ist oder das Element nicht gefunden werden konnte.

Beispiele

HTML-Root-Knoten ausgeben und Kindknoten auflisten

<?php
$html = '<!DOCTYPE html><html><head><title>Test</title></head><body><p>Hallo Welt</p></body></html>';

$tidy = tidy_parse_string($html, [], 'UTF8');
tidy_clean_repair($tidy);

$htmlNode = tidy_get_html($tidy);

if ($htmlNode !== false) {
    echo 'HTML-Knoten: ' . $htmlNode->name . PHP_EOL;

    if (!empty($htmlNode->child)) {
        foreach ($htmlNode->child as $child) {
            echo 'Kind-Knoten: ' . $child->name . PHP_EOL;
        }
    }
} else {
    echo 'Kein HTML-Knoten gefunden.';
}
HTML-Knoten: html Kind-Knoten: head Kind-Knoten: body

Objektorientierte Variante mit tidy::htmlNode()

<?php
$html = '<html><head><title>OO-Beispiel</title></head><body><h1>Überschrift</h1></body></html>';

$tidy = new tidy();
$tidy->parseString($html, [], 'UTF8');
$tidy->cleanRepair();

// Äquivalent zu tidy_get_html($tidy)
$htmlNode = $tidy->htmlNode();

if ($htmlNode !== false) {
    echo 'Knoten-Name: ' . $htmlNode->name . PHP_EOL;
    echo 'Hat Kinder: ' . (empty($htmlNode->child) ? 'Nein' : 'Ja') . PHP_EOL;
}
Knoten-Name: html Hat Kinder: Ja

// Wichtig · Fallstricke

Erweiterung erforderlich: Die Tidy-Erweiterung muss in PHP kompiliert oder als Modul geladen sein. Fehlt sie, steht weder tidy_get_html() noch die Klasse tidy zur Verfügung.

Parsebaum erst nach dem Parsen verfügbar: Die Funktion liefert nur dann ein sinnvolles Ergebnis, wenn das Dokument vorher vollständig geparst und ggf. mit tidy_clean_repair() bereinigt wurde. Andernfalls kann false zurückgegeben werden.

OO-Äquivalent: tidy::htmlNode() ist identisch in Verhalten und Rückgabewert — die Wahl zwischen prozeduralem und objektorientiertem Stil ist rein konventionell.