trim()
La funzione trim() in PHP rimuove spazi bianchi o altri caratteri specificati dall'inizio e dalla fine di una string.
Introduzione
La funzione trim() in PHP rimuove gli spazi bianchi (o altri caratteri da te specificati) da entrambi l'inizio e la fine di una string. È una delle funzioni per le stringhe più utilizzate, poiché il testo proveniente da form, file e richieste HTTP arriva quasi sempre con spazi, tabulazioni o a capo superflui intorno ad esso.
Questo capitolo tratta la sintassi, i caratteri predefiniti rimossi da trim(), come rimuovere un set di caratteri personalizzato, le differenze tra trim(), ltrim() e rtrim(), e gli errori più comuni da evitare.
Sintassi
trim(string $string, string $characters = " \n\r\t\v\x00"): string| Parametro | Descrizione |
|---|---|
$string | La string di input da elaborare. |
$characters | Opzionale. Il set di caratteri da rimuovere. Se omesso, viene utilizzato il set predefinito di spazi bianchi. |
La funzione restituisce una nuova string elaborata — non modifica la $string originale (le stringhe in PHP vengono passate per valore).
Per impostazione predefinita, trim() rimuove questi caratteri da entrambe le estremità:
| Carattere | Significato |
|---|---|
" " | Uno spazio ordinario |
"\t" | Una tabulazione |
"\n" | Un'interruzione di riga (nuova riga) |
"\r" | Un ritorno a capo |
"\0" | Il byte NUL |
"\x0B" (\v) | Una tabulazione verticale |
Esempio di base
Rimuovere gli spazi iniziali e finali da una string:
Le parentesi quadre vengono stampate solo per rendere visibile il risultato — dimostrano che gli spazi su entrambi i lati sono stati rimossi, mentre lo spazio interno (Hello, world!) viene mantenuto.
Rimozione di caratteri personalizzati
Il secondo argomento consente di scegliere esattamente quali caratteri rimuovere. È utile per pulire delimitatori, barre oblique o virgolette:
<?php
echo trim("xxxHello worldxxx", "x"), "\n"; // Hello world
echo trim("/var/www/html/", "/"), "\n"; // var/www/html
echo trim("###Section###", "#"), "\n"; // SectionPuoi passare più caratteri contemporaneamente — trim() rimuove qualsiasi di essi da ciascuna estremità finché non incontra un carattere che non è nel set:
<?php
echo trim("**[Note]**", "*[]"); // NoteSi noti che solo le estremità vengono interessate: le parentesi all'interno della string restano intatte, proprio come lo spazio interno nel primo esempio.
Intervalli di caratteri con ".."
All'interno dell'argomento $characters è possibile specificare un intervallo con due punti. Ad esempio, per rimuovere i caratteri di controllo ASCII:
<?php
$dirty = "\x01\x02Hello\x03";
echo trim($dirty, "\x00..\x1F"); // Hellotrim() vs ltrim() vs rtrim()
trim() agisce su entrambe le estremità. Quando si vuole intervenire su un solo lato, si utilizzano le funzioni correlate:
| Funzione | Rimuove da |
|---|---|
trim() | entrambe le estremità |
ltrim() | il lato sinistro (inizio) soltanto |
rtrim() | il lato destro (fine) soltanto |
<?php
$value = "...data...";
echo trim($value, "."), "\n"; // data
echo ltrim($value, "."), "\n"; // data...
echo rtrim($value, "."), "\n"; // ...dataCaso d'uso comune: pulizia dell'input dell'utente
trim() è particolarmente utile nella validazione dell'input dei form. Un utente potrebbe digitare uno spazio finale dopo la propria email o lasciare il campo vuoto con soli spazi. Effettuare il trim prima rende questi controlli affidabili:
<?php
$username = " alice ";
$username = trim($username);
if ($username === "") {
echo "Username is required.";
} else {
echo "Welcome, " . $username . "!"; // Welcome, alice!
}Senza la chiamata a trim(), un valore come " " (solo spazi) supererebbe un controllo if (!empty($username)) pur essendo di fatto vuoto.
Problemi comuni
- Restituisce un valore, non modifica la variabile.
trim($string);da solo non è utile — è necessario assegnare il risultato:$string = trim($string);. - Il set personalizzato è un elenco, non una sottostring.
trim("Hello", "Helo")rimuove ogni carattere iniziale/finale che compare in"Helo", non la parola letterale — quindi può eliminare più di quanto ci si aspetti. - Caratteri multibyte.
trim()opera sui byte, non sui code point Unicode. Per rimuovere spazi bianchi multibyte, utilizzare un set personalizzato o un'espressione regolare. - Agisce solo sulle estremità. Per rimuovere caratteri ovunque nella string, utilizzare
str_replace()opreg_replace().
Conclusione
La funzione trim() è lo strumento principale per pulire le estremità di una string — gli spazi bianchi per impostazione predefinita, oppure qualsiasi set di caratteri fornito. Combinata con le funzioni correlate ltrim() e rtrim(), rende la validazione dell'input e la normalizzazione delle stringhe semplici e prevedibili.
Per continuare a imparare sulla gestione delle stringhe in PHP, consulta PHP Strings, str_replace(), explode() e str_pad().