tidy HTML per Konsole innerhalb von PHP verwenden

Die Ausgangssituation: Ich möchte auf einem Webserver mit PHP 5.3, der unter Gentoo-Linux läuft, meinen PHP-Output via tidy HTML ausgeben, damit der Code aufgeräumt bzw „sauber“ ist.

Das Problem: Mir ist es aus „Gründen“ nicht möglich die PHP-Library nachzuinstallieren.

Die Lösung: Ich habe mir die Sources von tidy bei sourceforge.net geholt: http://tidy.cvs.sourceforge.net/viewvc/tidy/?view=tar , dann im Home-Verzeichnis in einem temporären Ordner entpackt und kompiliert („gmake“ im Ordner /tidy/build/gmake/).

Wenn das geklappt hat, sollte im Verzeichnis /tidy/bin/ jetzt die ausführbare Datei „tidy“ liegen.

Da das Home-Verzeichnis auf diesem System automatisch zur Umgebungsvariable zählt, habe ich diese Datei direkt ins Home-Verzeichnis kopiert und eine Konfigurations-Datei namens tidy.config dazu erstellt:

output-html: yes
drop-font-tags: yes
drop-empty-paras: yes
hide-comments: yes
join-classes: yes
join-styles: yes
show-body-only: yes
indent: yes
indent-spaces: 3
wrap: 300

So sieht meine Konfiguration für das Projekt aus. Falls jemand vor hat, seine eigene Konfiguration zu erstellen, sollte er sich insbesondere den Punkt „show-body-only“ ansehen… da ist normalerweise gewünscht, dass das auf „false“ steht 😉

Damit ich nun unter PHP diese Datei verwenden kann, so wie ich es gewohnt bin, wenn die Library aktiviert ist, schreibe ich eine Funktion, die im Projekt global verfügbar ist:

if (!function_exists(tidy_parse_string))
{
function tidy_parse_string($string)
{
exec ('echo "' . addcslashes($string, '"') . '" | tidy -config ~/tidy.config', $array);
return implode("\n", $array);
}
}

Diese Lösung ist zwar nicht besonders elegant, aber für ein zu migrierendes System, das auf die Funktion tidy_parse_string() setzt, ist es zumindest ein work-around, das bei mir in diesem Fall (bis jetzt) funktioniert hat.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>