Signatur
Beschreibung
tidy_clean_repair() wendet alle in der Tidy-Konfiguration definierten Bereinigungs- und Reparaturregeln auf ein zuvor mit tidy_parse_string(), tidy_parse_file() oder einer der OOP-Methoden gepartes HTML/XHTML-Dokument an. Typische Operationen sind das Schließen offener Tags, das Korrigieren verschachtelter Elemente, das Entfernen überflüssiger Leerzeichen und das Normalisieren von Attributen.
Die Funktion ist prozeduraler Stil und entspricht dem OOP-Aufruf $tidy->cleanRepair(). Sie muss nach dem Parsen und vor dem Abrufen des bereinigten Markups (z. B. mit tidy_get_output()) aufgerufen werden, da ansonsten das ursprünglich geparste, unreparierte Dokument zurückgeliefert wird.
Besonders nützlich ist sie beim Aufbereiten von HTML aus externen Quellen (Web-Scraping, Nutzereingaben, Legacy-Systeme), bei denen man ein wohlgeformtes Dokument für weitere Verarbeitungsschritte wie XPath-Abfragen oder DOM-Manipulationen benötigt.
Die Reparaturtiefe lässt sich über die Tidy-Konfigurationsoptionen wie drop-empty-elements, indent, wrap oder output-xhtml steuern, die beim Erzeugen des tidy-Objekts übergeben werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $tidy Pflicht | tidy | Ein tidy-Objekt, das das zuvor geparste HTML/XHTML-Dokument repräsentiert. Das Objekt muss durch einen der Parse-Aufrufe (z. B. tidy_parse_string()) bereits mit Markup befüllt worden sein. |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler während der Bereinigungs- oder Reparaturverarbeitung.Beispiele
Prozeduraler Aufruf: Defektes HTML bereinigen und ausgeben
<?php
$html = '<html><body><p>Offener Absatz<br><b>Fetttext ohne Ende</body>';
$config = [
'indent' => true,
'output-xhtml' => true,
'wrap' => 200,
];
$tidy = tidy_parse_string($html, $config, 'UTF8');
if (tidy_clean_repair($tidy)) {
echo tidy_get_output($tidy);
} else {
echo 'Fehler bei der Reparatur: ' . tidy_get_error_buffer($tidy);
}
OOP-Stil mit cleanRepair()-Methode
<?php
$html = '<div><p>Nicht geschlossenes Div<span>Text</div>';
$tidy = new tidy();
$tidy->parseString($html, ['output-xhtml' => true], 'UTF8');
$tidy->cleanRepair();
echo $tidy->value;
// Ausgabe: vollständig repariertes und wohlgeformtes XHTML-Dokument
// Wichtig · Fallstricke
Reihenfolge beachten: tidy_clean_repair() muss zwingend nach dem Parsen und vor dem Lesen des Ausgabepuffers aufgerufen werden. Wird dieser Schritt übersprungen, gibt tidy_get_output() das unreparierte Rohdokument zurück.
Seiteneffekte: Die Funktion verändert das Dokument im tidy-Objekt direkt. Soll das Original erhalten bleiben, muss das Markup vorher separat gesichert werden.
Erweiterung erforderlich: Die tidy-Erweiterung ist nicht in jeder PHP-Installation standardmäßig aktiviert. Bei Bedarf muss extension=tidy in der php.ini eingetragen oder das Paket (php-tidy) installiert werden.