W3docs

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
TeilBedeutung
$filenamePfad zur PHP-Datei, die gelesen und bereinigt werden soll.
RückgabewertEin 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, # Zeilenkommentar und /* 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:

FunktionOperiert aufEntfernt
php_strip_whitespace()einer PHP-QuelldateiKommentare + redundanter Whitespace im Quellcode
trim()einem string-WertWhitespace am Anfang und Ende eines Strings
ltrim() / rtrim()einem string-WertWhitespace 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().

Übung

Übung
Was ist die Funktionalität der PHP-Funktion 'trim()' in Programmen?
Was ist die Funktionalität der PHP-Funktion 'trim()' in Programmen?
Was this page helpful?