Start · Sprachen · PHP · Referenz · php_strip_whitespace

php_strip_whitespace

Funktion

Gibt den Quellcode einer PHP-Datei zurück, wobei Kommentare und überflüssiger Leerraum entfernt werden.

seit PHP 5.0.0 Kategorie: misc

Signatur

php_strip_whitespace(string $filename): string

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

Typ
string
Beschreibung
Gibt den bereinigten Quellcode als Zeichenkette zurück. Bei einem Fehler (z. B. wenn die Datei nicht gefunden wird) wird eine leere Zeichenkette zurückgegeben.

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);
<?php $a = 1; $b = 2; echo $a + $b;

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";
Originalgröße: 4820 Byte Bereinigt: 3105 Byte Einsparung: 35.58 %

// 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.