Signatur
Beschreibung
tidy_parse_string() ist die prozedurale Variante von tidy::parseString() und ermöglicht es, einen als String vorliegenden HTML- oder XML-Quellcode mit der Tidy-Bibliothek zu verarbeiten. Das Ergebnis ist ein tidy-Objekt, über das anschließend Bereinigung, Validierung und Zugriff auf den Dokumentbaum möglich sind.
Die Funktion eignet sich besonders, wenn dynamisch erzeugter oder aus externen Quellen stammender HTML-Code normalisiert, auf Fehler geprüft oder in ein wohlgeformtes Dokument umgewandelt werden soll — ohne dass eine Datei auf der Festplatte vorhanden sein muss.
Über den Parameter config lassen sich Tidy-Optionen als assoziatives Array oder als Pfad zu einer Konfigurationsdatei übergeben, etwa um die Ausgabe auf XHTML umzustellen oder Einrückungen anzupassen. Der Parameter encoding bestimmt, wie der Eingabestring kodiert wird (z. B. 'utf8' oder 'latin1').
Nach dem Parsen sollte tidy_clean_repair() aufgerufen werden, um das Dokument tatsächlich zu bereinigen, bevor der Inhalt mit tidy_get_output() abgerufen wird. Fehlermeldungen und Warnungen sind über tidy_get_error_buffer() zugänglich.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $string Pflicht | string | Der zu parsende HTML- oder XML-Quellcode als Zeichenkette. | |
| $config | array|string | [] | Tidy-Konfigurationsoptionen als assoziatives Array (z. B. ['indent' => true, 'output-xhtml' => true]) oder als Pfad zu einer Tidy-Konfigurationsdatei. |
| $encoding | string | Zeichenkodierung des Eingabestrings, z. B. 'utf8', 'latin1' oder 'ascii'. Wird ein leerer String übergeben, verwendet Tidy die in der Konfiguration definierte oder die Standard-Kodierung. |
Rückgabewert
tidy-Objekt zurück, das den geparsten Dokumentbaum repräsentiert. Im Fehlerfall (z. B. wenn die Tidy-Erweiterung nicht verfügbar ist) wird false zurückgegeben.Beispiele
Einfaches Bereinigen eines HTML-Strings
<?php
$html = '<html><head><title>Test</title></head><body><p>Hallo <b>Welt</p></body></html>';
$tidy = tidy_parse_string($html, ['indent' => true, 'output-xhtml' => true], 'utf8');
tidy_clean_repair($tidy);
echo tidy_get_output($tidy);
Fehleranalyse eines fehlerhaften HTML-Strings
<?php
$html = '<p>Nicht geschlossener Absatz<div>Verschachtelt</p></div>';
$tidy = tidy_parse_string($html, [], 'utf8');
if ($tidy === false) {
echo 'Tidy konnte den String nicht parsen.';
} else {
tidy_clean_repair($tidy);
$fehler = tidy_get_error_buffer($tidy);
if ($fehler) {
echo "Tidy-Meldungen:\n" . $fehler . "\n";
}
echo "Bereinigter Output:\n";
echo tidy_get_output($tidy);
}
// Wichtig · Fallstricke
Erweiterung erforderlich: Die Funktion steht nur zur Verfügung, wenn die tidy-PHP-Erweiterung installiert und aktiviert ist. Unter vielen Linux-Distributionen kann sie über das Paket php-tidy nachinstalliert werden.
Sicherheitshinweis: tidy_parse_string() allein reicht nicht als XSS-Schutz aus. Tidy entfernt zwar fehlerhafte Markup-Strukturen, filtert jedoch keine bösartigen Attribute oder JavaScript-Inhalte. Für sicheres HTML-Filtering sollte zusätzlich eine dedizierte Bibliothek wie HTMLPurifier eingesetzt werden.
Das prozedurale tidy_parse_string() und die objektorientierte Methode tidy::parseString() sind funktional äquivalent und können je nach bevorzugtem Programmierstil verwendet werden.