Signatur
Beschreibung
tidy_get_root() ist eine prozedurale Funktion der Tidy-Erweiterung, die den Wurzelknoten des internen Parsebaums eines geparsten HTML- oder XML-Dokuments zurückliefert. Der Wurzelknoten ist der oberste Knoten, der alle anderen Knoten des Dokuments als Kinder enthält.
Der zurückgegebene tidyNode erlaubt es, den gesamten Dokumentenbaum zu traversieren: Über die Eigenschaften child und next des Knotens können alle untergeordneten Knoten iterativ oder rekursiv durchlaufen werden. Dies ist nützlich, wenn man die Dokumentstruktur analysieren, spezifische Elemente suchen oder den Baum für eigene Zwecke verarbeiten möchte.
Die Funktion entspricht dem Aufruf der Methode tidyNode über die objektorientierte Schnittstelle, also $tidy->root(). Beide Varianten liefern identische Ergebnisse und sind je nach Codestil wählbar.
Voraussetzung ist, dass das tidy-Objekt bereits ein geparses Dokument enthält (z. B. via tidy_parse_string() oder tidy_parse_file()). Wurde noch kein Dokument geparst, kann der Rückgabewert ungültig sein.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $tidy Pflicht | tidy | Ein tidy-Objekt, das ein bereits gepartes HTML- oder XML-Dokument enthält. |
Rückgabewert
tidyNode-Objekt zurück, das den Wurzelknoten des Parsebaums repräsentiert. Über diesen Knoten kann der gesamte Dokumentenbaum traversiert werden.Beispiele
Wurzelknoten eines HTML-Dokuments ermitteln
<?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);
$root = tidy_get_root($tidy);
echo 'Knotenname: ' . $root->name . PHP_EOL;
echo 'Typ: ' . $root->type . PHP_EOL;
// Erstes Kind des Wurzelknotens ausgeben
if ($root->child) {
foreach ($root->child as $child) {
echo 'Kind-Knoten: ' . $child->name . PHP_EOL;
}
}
Baumtraversierung mit rekursiver Funktion
<?php
$html = '<html><body><h1>Überschrift</h1><p>Absatz</p></body></html>';
$tidy = new tidy();
$tidy->parseString($html, [], 'UTF8');
$tidy->cleanRepair();
function traverseTree(tidyNode $node, int $depth = 0): void {
$indent = str_repeat(' ', $depth);
$name = $node->name ?: '(Textknoten)';
echo $indent . $name . PHP_EOL;
if ($node->child) {
foreach ($node->child as $child) {
traverseTree($child, $depth + 1);
}
}
}
// Prozedural: tidy_get_root()
$root = tidy_get_root($tidy);
traverseTree($root);
// Wichtig · Fallstricke
Hinweis zur PHP-Erweiterung: Die Tidy-Erweiterung muss serverseitig aktiviert sein (extension=tidy in der php.ini). Sie ist nicht standardmäßig in allen PHP-Installationen verfügbar.
OOP-Äquivalent: tidy_get_root($tidy) ist funktional identisch mit $tidy->root(). Es empfiehlt sich, konsistent entweder die prozedurale oder die objektorientierte Schreibweise zu verwenden.
Knotentypen: Der Wurzelknoten hat den Typ TIDY_NODETYPE_ROOT (Wert 0). Dies unterscheidet ihn von anderen Knotentypen wie Elementen, Texten oder Kommentaren.