php_strip_whitespace()
In diesem Artikel behandeln wir die PHP-Funktion php_strip_whitespace() mit Syntax, Beispielen und Anwendungsfällen.
Die PHP-Funktion php_strip_whitespace() liest eine PHP-Quelldatei und gibt deren Inhalt zurück, wobei alle Kommentare und unnötiger Whitespace entfernt wurden — genau die Ausgabe, die man erhält, wenn man die Datei über php -w auf der Kommandozeile verarbeitet. Diese Seite behandelt die Syntax, was die Funktion entfernt (und was nicht), ein vollständiges ausführbares Beispiel, Performance-Aspekte und einen Vergleich mit den String-Trim-Funktionen, die häufig damit verwechselt werden.
Syntax
php_strip_whitespace(string $filename): string| Teil | Bedeutung |
|---|---|
$filename | Pfad zur PHP-Datei, die gelesen und bereinigt werden soll. |
| Rückgabewert | Ein string, der den Dateiinhalt ohne Kommentare und überflüssigen Whitespace enthält. Gibt bei einem Fehler einen leeren string zurück (z. B. wenn die Datei nicht existiert). |
Die Funktion führt die Datei nicht aus — sie tokenisiert lediglich den Quellcode. Sie verändert die Originaldatei auf der Festplatte auch nicht; sie gibt den bereinigten Quellcode als neuen string zurück und überlässt es dem Aufrufer, was damit geschieht.
Was wird entfernt
php_strip_whitespace() verwendet PHP's eigenen Tokenizer, sodass sie mit vollständigem Verständnis der PHP-Syntax bereinigt — der Code wird niemals durch das Entfernen von semantisch relevantem Whitespace beschädigt. Konkret werden folgende Elemente entfernt:
- Alle Kommentarstile:
// Zeilenkommentar,# Zeilenkommentarund/* Blockkommentar */(einschließlich/** Docblocks */). - Redundanter Whitespace zwischen Tokens, wobei Folgen von Leerzeichen, Tabs und Zeilenumbrüchen zusammengefasst werden.
Whitespace innerhalb von String-Literalen und Inhalte außerhalb von <?php … ?>-Tags (einfaches HTML) werden bewahrt, da deren Entfernung die Programmausgabe verändern würde.
Verwendung von php_strip_whitespace()
Übergeben Sie den Pfad der Datei, die bereinigt werden soll. Das folgende Beispiel schreibt eine kleine Datei und bereinigt sie anschließend, damit der Unterschied sichtbar wird:
<?php
// Create a sample file with comments and generous spacing.
$source = <<<'PHP'
<?php
// Greet the visitor.
function greet(string $name): string
{
/* Build the message */
return "Hello, $name!"; // spaces inside the string are kept
}
echo greet("World");
PHP;
file_put_contents('sample.php', $source);
// Strip comments and whitespace.
$stripped = php_strip_whitespace('sample.php');
echo $stripped;Die Kommentare und zusätzlichen Leerzeilen werden entfernt, während der Whitespace innerhalb des Strings "Hello, $name!" erhalten bleibt, da eine Änderung das Verhalten des Programms beeinflussen würde.
Wenn die Datei nicht gelesen werden kann, gibt die Funktion einen leeren string zurück, anstatt einen fatalen Fehler auszulösen:
<?php
$result = php_strip_whitespace('does-not-exist.php');
var_dump($result === ''); // bool(true)Wann sollte sie verwendet werden
- Ausliefern eines Produktions-Builds. Das Entfernen von Kommentaren und Whitespace verkleinert Quelldateien und reduziert leicht die Parse-Zeit bei kalten Ladevorgängen (bei aktiviertem Opcode-Cache wie OPcache wird dieser Vorteil nach dem ersten Request weitgehend aufgehoben).
- Verschleierung von verteiltem Code. Das Entfernen von Kommentaren und Docblocks macht ausgelieferten Quellcode weniger selbstdokumentierend — eine leichte, nicht sichere Form der Verschleierung.
- Untersuchung der tokenisierten Ausgabe. Es ist eine schnelle Möglichkeit, eine Datei ohne ihre Kommentare anzuzeigen.
Performance-Überlegungen
Verwenden Sie php_strip_whitespace() ausschließlich auf Produktionskopien Ihrer Dateien, niemals auf dem Arbeitsquellcode. Während der Entwicklung machen Kommentare und Whitespace den Code lesbar, debuggbar und wartbar; das Entfernen an Ort und Stelle würde diesen Vorteil zunichte machen. Der Standardansatz besteht darin, kommentierten Quellcode unter Versionskontrolle zu halten und bereinigte Kopien als Teil eines Build- oder Deploy-Schritts zu erzeugen.
Beachten Sie, dass mit OPcache (in modernem PHP standardmäßig gebündelt und aktiviert) kompilierter Bytecode nach dem ersten Request gecacht wird, sodass die Parse-Zeit-Einsparungen durch das Bereinigen marginal sind. Die Größenreduzierung ist der zuverlässigere Vorteil.
php_strip_whitespace() vs. trim()
Diese Funktionen sind trotz der ähnlich klingenden Namen unverwandt — eine häufige Quelle von Verwechslungen:
| Funktion | Operiert auf | Entfernt |
|---|---|---|
php_strip_whitespace() | einer PHP-Quelldatei | Kommentare + redundanter Whitespace im Quellcode |
trim() | einem string-Wert | Whitespace am Anfang und Ende eines Strings |
ltrim() / rtrim() | einem string-Wert | Whitespace an einem Ende |
Wenn das Ziel darin besteht, einen String zu bereinigen (z. B. Formulareingaben), sollte trim() verwendet werden, nicht php_strip_whitespace().
Verwandte Funktionen
file_get_contents()— liest den rohen Inhalt einer Datei ohne etwas zu entfernen.readfile()— liest eine Datei und schreibt sie direkt in den Ausgabepuffer.highlight_string()— das gegenteilige Ziel: PHP-Quellcode mit Syntax-Highlighting darstellen.- PHP-Kommentare — die Kommentarsyntaxen, die diese Funktion entfernt.
Fazit
php_strip_whitespace() gibt eine kommentar- und whitespace-freie Kopie einer PHP-Quelldatei zurück, indem sie diese durch PHP's Tokenizer verarbeitet — so werden Dateien sicher verkleinert, ohne gültigen Code zu beschädigen. Verwenden Sie sie für Produktions-Builds, denken Sie daran, dass sie auf Dateien (nicht auf Strings) arbeitet, und verwechseln Sie sie nicht mit trim().