Signatur
Beschreibung
tidy_get_body() ist eine prozedurale Hilfsfunktion der Tidy-Erweiterung, die direkt den <body>-Knoten des geparsten HTML-Dokuments liefert. Sie erspart das manuelle Traversieren des gesamten Parsebaums, wenn nur der Inhaltsbereich einer HTML-Seite relevant ist.
Die Funktion gibt ein tidyNode-Objekt zurück, über das rekursiv alle Kind-Knoten des <body>-Elements durchlaufen werden können. Dies ist besonders nützlich, wenn man gezielt den sichtbaren Seiteninhalt analysieren, bereinigen oder extrahieren möchte, ohne den <head>-Bereich einzubeziehen.
Die objektorientierte Entsprechung dieser Funktion ist die Methode tidy::body(), die identisch verwendet werden kann. Beide Formen sind funktional gleichwertig und es empfiehlt sich, die OOP-Variante in modernem PHP-Code zu bevorzugen.
Gibt null zurück, wenn das Dokument keinen <body>-Knoten enthält oder noch kein Dokument geparst wurde.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $tidy Pflicht | tidy | Eine gültige tidy-Objekt-Instanz, die ein bereits gepartes HTML-/XHTML-Dokument enthält. |
Rückgabewert
tidyNode-Objekt zurück, das den <body>-Knoten des Dokuments repräsentiert, oder null, wenn kein <body>-Knoten vorhanden ist.Beispiele
Body-Knoten eines HTML-Dokuments ausgeben
<?php
$html = <<<HTML
<!DOCTYPE html>
<html>
<head><title>Testseite</title></head>
<body>
<h1>Willkommen</h1>
<p>Dies ist ein Absatz.</p>
</body>
</html>
HTML;
$tidy = new tidy();
$tidy->parseString($html, [], 'utf8');
$tidy->cleanRepair();
$bodyNode = tidy_get_body($tidy);
if ($bodyNode !== null) {
echo $bodyNode->value;
} else {
echo 'Kein body-Element gefunden.';
}
Rekursives Traversieren der Body-Kindknoten
<?php
$html = '<html><body><p>Erster Absatz</p><p>Zweiter Absatz</p></body></html>';
$tidy = new tidy();
$tidy->parseString($html, [], 'utf8');
$tidy->cleanRepair();
$bodyNode = tidy_get_body($tidy);
function printNodes(tidyNode $node, int $depth = 0): void {
echo str_repeat(' ', $depth) . $node->name . PHP_EOL;
if (!empty($node->child)) {
foreach ($node->child as $child) {
printNodes($child, $depth + 1);
}
}
}
if ($bodyNode !== null) {
printNodes($bodyNode);
}
// Wichtig · Fallstricke
Hinweis zur OOP-Alternative: In modernem PHP-Code sollte die Methode tidy::body() bevorzugt werden, da prozedurale Tidy-Funktionen als veraltet gelten können und die OOP-Schnittstelle konsistenter ist.
Voraussetzung: Das Tidy-Dokument muss vor dem Aufruf mit tidy::parseString(), tidy::parseFile() oder einer analogen prozeduralen Funktion geparst worden sein. Andernfalls kann null zurückgegeben werden.
Erweiterung: Die Tidy-Erweiterung muss in der PHP-Installation aktiviert sein (extension=tidy in der php.ini). Sie ist nicht standardmäßig aktiv.