Formatta correttamente un numero con zeri iniziali in PHP

Ralfh Bryan Perez 30 gennaio 2023
  1. Usa una stringa per sostituire il numero
  2. substr() per aggiungere zeri iniziali in PHP
  3. printf()/sprintf() per aggiungere zeri iniziali in PHP
  4. str_pad() per aggiungere zeri iniziali in PHP
Formatta correttamente un numero con zeri iniziali in PHP

In PHP, numeri o interi con zeri iniziali possono avere valori diversi con risultati imprevisti.

Esempio:

$number = 0987654321; //this is an octal number
$number = 0x987654321 // this is a hexadecimal number
$number = 0b0987654321 // this is a binary number

Per assicurarti che il numero non perda il suo significato naturale, ci sono diversi modi per provare come usare una stringa invece di un numero o usando diverse funzioni come substr, printf() / sprintf() e str_pad.

Usa una stringa per sostituire il numero

L’approccio più semplice; semplicemente per usare una stringa come sostituto del numero.

$number = "0987654321";

Quando usare:

  1. Non è richiesta la lunghezza dell’output.
  2. Non c’è eccezione al numero che necessita sempre di uno zero iniziale.

substr() per aggiungere zeri iniziali in PHP

Questo metodo ritaglia i numeri da sinistra quando la lunghezza della stringa è stata superata.

Se l’start è negativo, la stringa restituita inizierà dal carattere start'th dalla fine della stringa.

Esempio:

$number = 98765;
$length = 10;
$string = substr(str_repeat(0, $length).$number, - $length);

//output: 0000098765

Quando usare:

  1. Quando c’è una lunghezza fissa della stringa di output.
  2. Aggiunta di zeri quando la stringa è inferiore alla lunghezza.

printf()/sprintf() per aggiungere zeri iniziali in PHP

Per riempire un output per una lunghezza fissa, quando l’input è inferiore alla lunghezza, e restituire la stringa quando l’input è maggiore.

Esempio:

$length = 10;
$char = 0;
$type = 'd';
$format = "%{$char}{$length}{$type}"; // or "$010d";

//print and echo
printf($format, 987654321);

//store to a variable
$newFormat = sprintf($format, 987654321);

// output: 0987654321

Nell’esempio, la lunghezza fissa è impostata a 10 e la lunghezza di input è 9, quindi aggiunge uno zero a sinistra se si usa printf()/sprintf.

  • Valori dei parametri sprintf()
Parametro Descrizione
format (obbligatorio) La stringa e come formattare le variabili.
Possibili valori di formato:
%% - Segno di percentuale
%b - Binario
%c - Carattere a cui si fa riferimento ASCII
%d - numero decimale (negativo o positivo)
%e - notazione scientifica minuscola
%E - notazione scientifica maiuscola
%u - Numero decimale senza segno
%f - Numero mobile (compatibile con impostazioni locali)
%F - Numero mobile (non compatibile con impostazioni locali)
%g - versione più breve di %e e %f
%G- versione più corta di %E e %F
%o- ottale
%s- Stringa
%X - Esadecimale (minuscolo)
%X - Esadecimale (maiuscolo)
arg1 (obbligatorio) Da inserire al primo segno %
arg2 (facoltativo) Da inserire al secondo segno %
argg++ (Opzionale) Da inserire al terzo, quarto, ecc. segno %

Nota:

  • Se la lunghezza della stringa di input è maggiore o uguale alla lunghezza del pad, restituirà solo la stringa - nessun carattere verrà omesso.
  • Il riempimento viene aggiunto solo se la lunghezza dell’input è inferiore alla lunghezza del riempimento.

str_pad() per aggiungere zeri iniziali in PHP

Questo metodo riempirà una stringa con una nuova lunghezza di caratteri specificati.

Esempio:

$length = 7;
$string = "12345";
echo str_pad($string,$length,"0", STR_PAD_LEFT);
//output: 0012345

L’esempio sopra aggiungerà lo zero alla stringa specificata finché non corrisponde alla lunghezza specificata (che è 7 in questo caso).

  • str_pad() Elenco dei parametri
Parametro Descrizione
string La corda da riempire
length Specifica la nuova lunghezza della stringa. Nota: Se il valore è inferiore alla lunghezza della stringa, non accadrà nulla.
pad_string Specifica la stringa da utilizzare per il riempimento. Il valore predefinito è uno spazio bianco.
pad_type Specifica dove riempire la stringa.
Valori accettati:
STR_PAD_BOTH - Questo riempirà entrambi i lati della stringa.
STR_PAD_LEFT - Riempi il lato sinistro della stringa
STR_PAD_RIGHT - Pad sul lato destro della stringa

Articolo correlato - PHP Function