Signatur
Beschreibung
php_strip_whitespace() liest eine PHP-Quelldatei ein und gibt deren Inhalt zurück, nachdem alle Kommentare (einzeilig mit // und # sowie mehrzeilig mit /* ... */) sowie überflüssiger Leerraum entfernt wurden. Das Ergebnis entspricht im Wesentlichen dem, was der PHP-Tokenizer nach dem Stripvorgang liefert.
Die Funktion ist nützlich, um PHP-Dateien für die Auslieferung oder das Caching zu optimieren – ähnlich wie JavaScript-Minifier es für JS-Dateien tun. Sie eignet sich beispielsweise dazu, die Größe von Bibliotheksdateien zu reduzieren oder den Inhalt vor der Analyse im Speicher zu bereinigen.
Im Gegensatz zu einfachen Regex-Ersetzungen arbeitet php_strip_whitespace() auf Basis des PHP-Tokenizers und berücksichtigt daher korrekt Strings, Heredoc/Nowdoc-Syntax und andere Sprachkonstrukte, die versehentlich verändert werden könnten.
Die Funktion öffnet die Datei selbst und benötigt daher einen gültigen Dateipfad. Zeichenketten im Arbeitsspeicher können nicht direkt übergeben werden; hierfür kann eine temporäre Datei als Workaround genutzt werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $filename Pflicht | string | Der Pfad zur PHP-Quelldatei, die bereinigt werden soll. Der Pfad kann absolut oder relativ sein. |
Rückgabewert
Beispiele
Einfaches Entfernen von Kommentaren und Leerraum
<?php
// Beispiel-PHP-Datei erstellen
$tempFile = tempnam(sys_get_temp_dir(), 'php_');
file_put_contents($tempFile, '<?php
// Einzeiliger Kommentar
$a = 1; // Inline-Kommentar
/*
* Mehrzeiliger Kommentar
*/
$b = 2;
echo $a + $b;
');
// Quellcode bereinigen
$stripped = php_strip_whitespace($tempFile);
echo $stripped;
unlink($tempFile);
Vergleich der Dateigrößen vor und nach der Bereinigung
<?php
$file = '/pfad/zur/bibliothek.php';
$original = file_get_contents($file);
$stripped = php_strip_whitespace($file);
$originalSize = strlen($original);
$strippedSize = strlen($stripped);
$saved = round((1 - $strippedSize / $originalSize) * 100, 2);
echo "Originalgröße: {$originalSize} Byte\n";
echo "Bereinigt: {$strippedSize} Byte\n";
echo "Einsparung: {$saved} %\n";
// Wichtig · Fallstricke
Fallstricke: php_strip_whitespace() entfernt nur PHP-Kommentare und Leerraum innerhalb von PHP-Blöcken. Leerraum und HTML außerhalb von <?php ?>-Tags bleibt unverändert erhalten.
Die Funktion gibt bei einem Fehler (fehlende oder nicht lesbare Datei) stillschweigend eine leere Zeichenkette zurück – es wird keine Exception geworfen und kein PHP-Fehler ausgelöst. Daher empfiehlt es sich, die Existenz der Datei vor dem Aufruf mit file_exists() zu prüfen.
Strings, die Kommentarsyntax enthalten (z. B. "// kein Kommentar"), werden korrekt erkannt und nicht verändert, da die Funktion den echten PHP-Tokenizer verwendet.