str_pad()
La funzione PHP str_pad() aggiunge caratteri a una stringa fino a raggiungere una lunghezza specificata. Utile per allineare colonne e formattare output.
La funzione PHP str_pad() aggiunge una stringa a un'altra finché non raggiunge una lunghezza definita. La si utilizza quando l'output deve avere una larghezza fissa: zero-padding dei numeri (007), allineamento di colonne in un report, costruzione di record a larghezza fissa per sistemi legacy o centratura di un'etichetta all'interno di un banner.
Questa pagina illustra la sintassi, ciascuna modalità di riempimento, le regole che possono trarre in inganno e degli esempi pratici eseguibili.
Sintassi
str_pad(string $string, int $length, string $pad_string = " ", int $pad_type = STR_PAD_RIGHT): stringParametri
| Parametro | Richiesto | Descrizione |
|---|---|---|
$string | Sì | La stringa di input da riempire. |
$length | Sì | La lunghezza target del risultato. Se è minore o uguale alla lunghezza corrente di $string, non viene applicato alcun riempimento e $string viene restituita invariata. |
$pad_string | No | La stringa usata per riempire lo spazio. Per impostazione predefinita è uno spazio singolo. Può essere composta da più caratteri. |
$pad_type | No | Dove aggiungere il riempimento: STR_PAD_RIGHT (predefinito), STR_PAD_LEFT o STR_PAD_BOTH. |
La funzione restituisce la stringa riempita. Non tronca mai — al limite allunga la stringa o la restituisce così com'è.
Esempio base: zero-padding di un numero
Un utilizzo comune è forzare un numero a una larghezza fissa aggiungendo zeri iniziali.
"Hello" è lunga 5 caratteri e abbiamo richiesto una lunghezza di 10, quindi str_pad() aggiunge 5 caratteri "0" a sinistra:
00000HelloLe tre modalità di riempimento
Il quarto argomento controlla da quale lato viene aggiunto il riempimento.
<?php
echo str_pad("Hi", 8, "-", STR_PAD_RIGHT), "\n"; // Hi------
echo str_pad("Hi", 8, "-", STR_PAD_LEFT), "\n"; // ------Hi
echo str_pad("Hi", 8, "-", STR_PAD_BOTH), "\n"; // ---Hi---
?>Output:
Hi------
------Hi
---Hi---Con STR_PAD_BOTH, il riempimento viene suddiviso tra i due lati. Quando il numero di caratteri di riempimento è dispari, quello in più va a destra:
<?php
echo str_pad("Hi", 7, "-", STR_PAD_BOTH), "\n"; // --Hi---
?>Esempio pratico: allineamento di un report
Poiché str_pad() produce colonne a larghezza fissa, è utile per tabelle in testo semplice. Si riempiono le etichette a destra e i numeri a sinistra:
<?php
$items = ["Apples" => 3, "Bread" => 12, "Milk" => 1];
foreach ($items as $name => $qty) {
echo str_pad($name, 10) . str_pad($qty, 5, " ", STR_PAD_LEFT) . "\n";
}
?>Output:
Apples 3
Bread 12
Milk 1Note e avvertenze
- Non accorcia mai una stringa. Se
$lengthè minore della lunghezza dell'input,str_pad()restituisce l'input invariato. Usasubstr()se hai bisogno anche di limitare la lunghezza. - Le stringhe di riempimento multi-carattere possono eccedere — ma
str_pad()le taglia. Riempire"x"fino alla lunghezza 6 con"ab"produce"xababa": la stringa di riempimento si ripete e viene troncata esattamente alla lunghezza target. - Conta i byte, non i caratteri. Con testo multibyte (UTF-8), un carattere accentato o non latino può occupare più byte, quindi la larghezza visibile può differire da
$length. Non esiste unmb_str_pad()integrato prima di PHP 8.3. - Per numeri con zero-padding,
sprintf()con un formato come%05dè spesso più chiaro distr_pad().
Funzioni correlate
str_repeat()— ripete una stringa un numero fisso di volte.sprintf()— formatta stringhe con specificatori di larghezza e precisione.number_format()— formatta numeri con separatori delle migliaia e decimali.strlen()— ottiene la lunghezza chestr_pad()usa come riferimento.trim()— l'idea inversa: rimuove i caratteri circostanti.