Signatur
Beschreibung
tidy_repair_file() liest eine Datei vom Dateisystem, übergibt den Inhalt an die Tidy-Bibliothek zur Bereinigung und gibt den reparierten Inhalt als Zeichenkette zurück. Dabei werden fehlerhafte HTML-Strukturen automatisch korrigiert, fehlende Tags ergänzt und die Ausgabe normalisiert.
Im Gegensatz zu tidy_repair_string() arbeitet diese Funktion direkt mit einer Datei, ohne dass deren Inhalt vorher manuell eingelesen werden muss. Dies ist praktisch, wenn lokale Dateien bereinigt und das Ergebnis weiterverarbeitet oder in eine neue Datei geschrieben werden soll.
Über den Parameter $config lässt sich das Verhalten der Tidy-Bibliothek detailliert steuern, beispielsweise ob die Ausgabe als XHTML oder HTML erfolgen soll, wie Einrückungen gehandhabt werden und welches Zeichenset verwendet wird. Die Konfiguration kann entweder als assoziatives Array oder als Pfad zu einer Tidy-Konfigurationsdatei übergeben werden.
Diese Funktion ist besonders nützlich beim Verarbeiten von gescrapten oder extern bezogenen HTML-Dateien, bei denen die Markup-Qualität nicht garantiert werden kann, und die vor der weiteren Verwendung normalisiert werden müssen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $filename Pflicht | string | Pfad zur Datei, die repariert werden soll. Kann ein relativer oder absoluter Dateipfad sein. | |
| $config | array|string|null | null | Konfiguration für die Tidy-Bibliothek, entweder als assoziatives Array mit Einstellungen oder als Pfad zu einer Tidy-Konfigurationsdatei. Wird null übergeben, gelten die Standardeinstellungen. |
| $encoding | string|null | null | Zeichenkodierung der Eingabe- und Ausgabedaten, z. B. 'utf8', 'latin1' oder 'ascii'. Bei null wird die Standardkodierung verwendet. |
| $useIncludePath | bool | false | Wenn true, wird die Datei auch im include_path gesucht, ähnlich wie bei include oder fopen() mit aktiviertem use_include_path. |
Rückgabewert
false zurückgegeben.Beispiele
Einfache HTML-Datei reparieren und ausgeben
<?php
// Datei 'broken.html' mit fehlerhaftem HTML reparieren
$repaired = tidy_repair_file('broken.html', ['output-xhtml' => true], 'utf8');
if ($repaired === false) {
echo 'Fehler: Datei konnte nicht repariert werden.';
} else {
echo $repaired;
}
Reparierte Datei in eine neue Datei speichern
<?php
$config = [
'indent' => true,
'output-html' => true,
'wrap' => 120,
];
$repaired = tidy_repair_file('input.html', $config, 'utf8');
if ($repaired !== false) {
file_put_contents('output_clean.html', $repaired);
echo 'Datei erfolgreich repariert und gespeichert.';
} else {
echo 'Fehler beim Reparieren der Datei.';
}
Datei aus dem include_path reparieren
<?php
// Setzt voraus, dass 'templates/page.html' im include_path liegt
$repaired = tidy_repair_file('templates/page.html', null, 'utf8', true);
if ($repaired !== false) {
echo strlen($repaired) . ' Zeichen reparierter Inhalt erhalten.';
}
// Wichtig · Fallstricke
Erweiterung erforderlich: Die Funktion ist nur verfügbar, wenn PHP mit der tidy-Erweiterung kompiliert wurde (PECL-Erweiterung). Auf manchen Systemen muss extension=tidy in der php.ini aktiviert werden.
Datei-Zugriff: Die Funktion liest die Datei vom Dateisystem. Stellen Sie sicher, dass der PHP-Prozess Leserechte auf die Datei besitzt, und vermeiden Sie es, benutzerseitig eingegebene Dateinamen ungeprüft zu übergeben, um Path-Traversal-Angriffe zu verhindern.
Zeichenkodierung: Die möglichen Werte für $encoding unterscheiden sich von den üblichen PHP-Kodierungsbezeichnungen. Gültige Werte sind u. a. 'utf8', 'latin1', 'iso2022', 'mac', 'win1252', 'ibm858', 'utf16', 'utf16le', 'utf16be', 'big5' und 'shiftjis'.