W3docs

php_strip_whitespace()

In questo articolo ci concentriamo sulla funzione PHP php_strip_whitespace(), con panoramica, funzionamento ed esempi pratici.

La funzione PHP php_strip_whitespace() legge un file sorgente PHP e ne restituisce il contenuto con tutti i commenti e gli spazi bianchi non necessari rimossi — esattamente l'output che si otterrebbe eseguendo il file tramite php -w dalla riga di comando. Questa pagina tratta la sintassi, cosa la funzione rimuove (e cosa non rimuove), un esempio completo eseguibile, considerazioni sulle prestazioni e come si distingue dalle funzioni di trimming delle stringhe con cui viene spesso confusa.

Sintassi

php_strip_whitespace(string $filename): string
ParteSignificato
$filenamePercorso del file PHP da leggere e processare.
Valore restituitoUna stringa contenente il sorgente del file con commenti e spazi bianchi ridondanti rimossi. Restituisce una stringa vuota in caso di errore (ad esempio, se il file non esiste).

La funzione non esegue il file — ne effettua solo la tokenizzazione del sorgente. Inoltre, non modifica il file originale su disco; restituisce il sorgente elaborato come nuova stringa, lasciando a te la decisione su cosa farne.

Cosa viene rimosso

php_strip_whitespace() utilizza il tokenizzatore nativo di PHP, quindi rimuove elementi con piena consapevolezza della sintassi PHP — non rompe mai il codice eliminando spazi bianchi significativi. Nello specifico, rimuove:

  • Tutti gli stili di commento: // linea, # linea e /* blocco */ (inclusi /** docblock */).
  • Spazi bianchi ridondanti tra i token, comprimendo sequenze di spazi, tabulazioni e newline.

Ha cura di preservare gli spazi bianchi all'interno dei letterali stringa e qualsiasi contenuto esterno ai tag <?php … ?> (HTML semplice), poiché rimuoverli cambierebbe l'output del programma.

Come usare php_strip_whitespace()

Passa il percorso del file che vuoi elaborare. L'esempio seguente scrive un piccolo file, quindi lo elabora per mostrare la differenza:

<?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;

I commenti e le righe vuote extra vengono eliminati, mentre la spaziatura all'interno della stringa "Hello, $name!" rimane intatta, perché modificarla cambierebbe il comportamento del programma.

Se il file non può essere letto, la funzione restituisce una stringa vuota anziché generare un errore fatale:

<?php
$result = php_strip_whitespace('does-not-exist.php');

var_dump($result === ''); // bool(true)

Quando usarla

  • Distribuzione in produzione. Rimuovere commenti e spazi bianchi riduce le dimensioni dei file sorgente e diminuisce leggermente il tempo di parsing al primo caricamento (con una cache opcode come OPcache abilitata, quel vantaggio viene in gran parte assorbito dopo la prima richiesta).
  • Offuscamento del codice distribuito. Rimuovere commenti e docblock rende il sorgente distribuito meno auto-documentante — una forma di offuscamento leggera, non sicura.
  • Ispezione dell'output tokenizzato. È un modo rapido per visualizzare il sorgente di un file senza i suoi commenti.

Considerazioni sulle prestazioni

Usa php_strip_whitespace() solo sulle copie di produzione dei tuoi file, mai sul sorgente di lavoro. Durante lo sviluppo, commenti e spazi bianchi rendono il codice leggibile, debuggabile e manutenibile; rimuoverli in-place significherebbe perdere tutto ciò. L'approccio standard è mantenere il sorgente commentato sotto controllo versione e generare copie elaborate come parte di una fase di build/deploy.

Nota che con OPcache (incluso e abilitato per impostazione predefinita in PHP moderno), il bytecode compilato viene memorizzato in cache dopo la prima richiesta, quindi i risparmi di tempo di parsing derivanti dall'elaborazione sono marginali. La riduzione delle dimensioni è il vantaggio più affidabile.

php_strip_whitespace() vs. trim()

Queste funzioni sono indipendenti nonostante i nomi simili — una fonte comune di confusione:

FunzioneOpera suRimuove
php_strip_whitespace()un file sorgente PHPcommenti + spazi bianchi ridondanti dal codice sorgente
trim()un valore stringaspazi bianchi dall'inizio e dalla fine di una stringa
ltrim() / rtrim()un valore stringaspazi bianchi da un solo estremo

Se il tuo obiettivo è pulire una stringa (come input di un modulo), usa trim(), non php_strip_whitespace().

Funzioni correlate

  • file_get_contents() — legge il contenuto grezzo di un file senza rimuovere nulla.
  • readfile() — legge un file e lo scrive direttamente nel buffer di output.
  • highlight_string() — l'obiettivo opposto: renderizza il sorgente PHP con evidenziazione della sintassi.
  • Commenti PHP — le sintassi dei commenti che questa funzione rimuove.

Conclusione

php_strip_whitespace() restituisce una copia di un file sorgente PHP priva di commenti e spazi bianchi, eseguendola attraverso il tokenizzatore di PHP, in modo da ridurre le dimensioni dei file in modo sicuro senza rompere il codice valido. Riservala per le build di produzione, ricorda che opera su file (non su stringhe) e non confonderla con trim().

Esercizio

Pratica
Qual è la funzionalità della funzione PHP 'trim()' utilizzata nei programmi?
Qual è la funzionalità della funzione PHP 'trim()' utilizzata nei programmi?
Was this page helpful?