Start · Sprachen · PHP · Referenz · tidy_diagnose

tidy_diagnose

Funktion

Führt konfigurierte Diagnosen am geparsten und reparierten Markup aus und gibt das Ergebnis in den Tidy-Fehlerausgabepuffer.

seit PHP 5.0.0 Kategorie: string

Signatur

tidy_diagnose(tidy $tidy): bool

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

Typ
bool
Beschreibung
Gibt 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);
?>
Fehlerpuffer: linie 1 Spalte 40 - Warnung: <b> fehlendes </b> vor </p> Repariertes HTML: <!DOCTYPE html> <html> <head> <title>Test</title> </head> <body> <p>Hallo <b>Welt</b></p> </body> </html>

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";
}
?>
Diagnose-Ausgabe: Info: Dokument enthält X Fehler und Y Warnungen ...

// 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.