Start · Sprachen · PHP · Referenz · tidy_clean_repair

tidy_clean_repair

Funktion

Führt konfigurierte Bereinigungs- und Reparaturoperationen auf einem bereits geparsten <code>tidy</code>-Dokument aus.

seit PHP 5.0.0 Kategorie: string

Signatur

tidy_clean_repair(tidy $tidy): bool

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

Typ
bool
Beschreibung
Gibt 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);
}
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> </head> <body> <p>Offener Absatz<br /><b>Fetttext ohne Ende</b></p> </body> </html>

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.