Start · Sprachen · PHP · Referenz · tidy_parse_file

tidy_parse_file

Funktion

Parst HTML-, XHTML- oder XML-Markup aus einer Datei oder URI und gibt ein <code>tidy</code>-Objekt zurück.

seit PHP 5.0.0 Kategorie: string

Signatur

tidy_parse_file(string $filename, array|string|null $config = null, ?string $encoding = null, bool $useIncludePath = false): tidy|false

Beschreibung

tidy_parse_file() liest den Inhalt einer lokalen Datei oder einer URI und übergibt diesen an die Tidy-Bibliothek zur Analyse. Das Ergebnis ist ein tidy-Objekt, das anschließend für Diagnose, Bereinigung oder Konvertierung des Markups verwendet werden kann.

Die Funktion ist besonders nützlich, wenn man HTML-Dokumente aus dem Dateisystem oder von entfernten URLs validieren oder bereinigen möchte, ohne den Inhalt zunächst manuell einlesen zu müssen. Sie entspricht der prozeduralen Variante der Methode tidy::parseFile().

Über den Parameter $config lassen sich alle Tidy-Konfigurationsoptionen als assoziatives Array oder als Pfad zu einer Konfigurationsdatei übergeben. Mit $encoding kann die Zeichenkodierung des Dokuments explizit angegeben werden. Gültige Werte sind z. B. utf8, latin1 oder ascii.

Nach dem Parsen sollte man mit tidy_get_error_buffer() oder tidy_get_output() auf Fehler und das bereinigte Ergebnis zugreifen. Für die direkte Verarbeitung von Strings im Speicher empfiehlt sich stattdessen tidy_parse_string().

Parameter

Name Typ Default Beschreibung
$filename Pflicht string Pfad zu einer lokalen Datei oder eine URI, deren Inhalt geparst werden soll.
$config array|string|null null Tidy-Konfigurationsoptionen als assoziatives Array oder als Pfad zu einer Tidy-Konfigurationsdatei. Wird null übergeben, werden Standardwerte verwendet.
$encoding string|null null Zeichenkodierung des Eingabedokuments, z. B. utf8, latin1 oder ascii. Bei null wird die Standardkodierung verwendet.
$useIncludePath bool false Wenn true, wird die Datei auch im PHP-Includepfad (include_path) gesucht.

Rückgabewert

Typ
tidy|false
Beschreibung
Gibt bei Erfolg ein tidy-Objekt zurück, das das geparste Dokument repräsentiert. Bei einem Fehler (z. B. Datei nicht lesbar) wird false zurückgegeben.

Beispiele

Lokale HTML-Datei parsen und bereinigtes Markup ausgeben

<?php
// Voraussetzung: PHP-Erweiterung 'tidy' ist aktiviert
$config = [
    'indent'       => true,
    'output-xhtml' => true,
    'wrap'         => 120,
];

$tidy = tidy_parse_file('seite.html', $config, 'utf8');

if ($tidy === false) {
    echo 'Datei konnte nicht geparst werden.';
} else {
    tidy_clean_repair($tidy);
    echo tidy_get_output($tidy);
}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" ...> <html xmlns="http://www.w3.org/1999/xhtml"> <head>...</head> <body>...</body> </html>

Fehler und Warnungen nach dem Parsen ausgeben

<?php
$tidy = tidy_parse_file('defektes-dokument.html', null, 'utf8');

if ($tidy !== false) {
    tidy_clean_repair($tidy);

    $fehler = tidy_get_error_buffer($tidy);
    if ($fehler) {
        echo "Tidy-Meldungen:\n" . $fehler;
    } else {
        echo "Keine Fehler gefunden.";
    }
} else {
    echo "Datei konnte nicht gelesen werden.";
}
Tidy-Meldungen: line 5 column 1 - Warning: missing </ul> before </div>

// Wichtig · Fallstricke

Sicherheitshinweis: Wird eine extern kontrollierte URI (z. B. aus Benutzereingaben) als $filename übergeben, besteht das Risiko von Server-Side Request Forgery (SSRF). Validiere und beschränke erlaubte Pfade und URIs immer sorgfältig.

Die Tidy-Erweiterung muss in PHP kompiliert oder als gemeinsame Bibliothek geladen sein (extension=tidy in der php.ini). Ist sie nicht verfügbar, löst der Aufruf einen fatalen Fehler aus.

Ab PHP 8.0 kann der erste Parameter nicht mehr null sein; zuvor war dies teilweise möglich. Der Rückgabewert false sollte stets mit === false geprüft werden, da ein tidy-Objekt in booleschen Kontexten als true gilt.