Signatur
Beschreibung
tidy_diagnose() ist eine prozedurale Wrapper-Funktion der Tidy-Erweiterung und führt eine eingehende Diagnose des zuvor geparsten und reparierten HTML- oder XML-Dokuments durch. Die Ergebnisse dieser Diagnose werden im Fehlerausgabepuffer des Tidy-Objekts gespeichert, der anschließend über tidy::errorBuffer (bzw. ob_get_clean() bei prozeduraler Nutzung) abgerufen werden kann.
Die Funktion ist besonders nützlich, wenn detaillierte Informationen über die Struktur des Dokuments benötigt werden, zum Beispiel die Anzahl der Fehler, Warnungen oder sonstiger Hinweise auf problematische Stellen im Quellcode. Sie erweitert den normalen Reparaturprozess um zusätzliche diagnostische Ausgaben.
Der Aufruf sollte nach dem Parsen (tidy_parse_string() oder tidy_parse_file()) und dem optionalen Reparaturschritt (tidy_clean_repair()) erfolgen, damit alle relevanten Informationen im Diagnosebericht enthalten sind.
In objektorientierter Schreibweise steht die Methode als tidy::diagnose() zur Verfügung und verhält sich identisch zur prozeduralen Variante.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $tidy Pflicht | tidy | Ein tidy-Objekt, das ein zuvor gepartes (und idealerweise repariertes) Dokument enthält. |
Rückgabewert
true bei Erfolg zurück, oder false wenn ein Fehler aufgetreten ist.Beispiele
Diagnose eines fehlerhaften HTML-Dokuments
<?php
$html = '<html><head><title>Test</title></head><body><p>Hallo <b>Welt</p></body></html>';
$tidy = tidy_parse_string($html, [], 'UTF8');
tidy_clean_repair($tidy);
tidy_diagnose($tidy);
echo "Fehlerpuffer:\n";
echo $tidy->errorBuffer . "\n";
echo "\nRepariertes HTML:\n";
echo tidy_get_output($tidy);
?>
Objektorientierte Nutzung mit tidy::diagnose()
<?php
$html = '<html><body><p>Unclosed paragraph<br><img src="bild.jpg"></body></html>';
$tidy = new tidy();
$tidy->parseString($html, ['output-xhtml' => true], 'UTF8');
$tidy->cleanRepair();
$tidy->diagnose();
// Diagnostikinformationen ausgeben
if (!empty($tidy->errorBuffer)) {
echo "Diagnose-Ausgabe:\n" . $tidy->errorBuffer . "\n";
} else {
echo "Keine Diagnose-Meldungen vorhanden.\n";
}
?>
// Wichtig · Fallstricke
Aufreihenfolge beachten: tidy_diagnose() sollte erst nach tidy_clean_repair() aufgerufen werden, da sonst möglicherweise unvollständige Diagnoseinformationen ausgegeben werden. Das Ergebnis der Diagnose wird dem bestehenden errorBuffer hinzugefügt und überschreibt ihn nicht.
Die Tidy-Erweiterung muss beim Kompilieren von PHP aktiviert worden sein (entweder gebündelt via --with-tidy oder als PECL-Paket). Auf manchen Systemen ist sie standardmäßig nicht aktiv – dies lässt sich mit extension_loaded('tidy') prüfen.