Comment formater correctement un nombre avec des zéros en tête de liste en PHP

Ralfh Bryan Perez 30 janvier 2023
  1. L’utilisation d’une chaîne de caractères pour remplacer le nombre
  2. substr() pour ajouter des zéros de tête en PHP
  3. printf()/sprintf() pour ajouter des zéros de tête en PHP
  4. str_pad() pour ajouter des zéros de tête en PHP
Comment formater correctement un nombre avec des zéros en tête de liste en PHP

En PHP, les nombres ou les entiers avec des zéros en tête peuvent avoir des valeurs différentes avec des résultats inattendus.

Exemple:

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

Pour s’assurer que le nombre ne perdra pas sa signification “naturelle”, il existe plusieurs façons d’essayer, comme par exemple en utilisant une chaîne de caractères au lieu d’un nombre ou en utilisant différentes fonctions telles que substr, printf() / sprintf() et str_pad.

L’utilisation d’une chaîne de caractères pour remplacer le nombre

L’approche la plus simple; il suffit d’utiliser une chaîne de caractères comme substitut au numéro.

$number = "0987654321";

Quand utiliser:

  1. Il n’y a pas de longueur requise pour la sortie.
  2. Il n’y a pas d’exception au fait que le nombre doit toujours être précédé d’un zéro.

substr() pour ajouter des zéros de tête en PHP

Cette méthode découpe les chiffres de la gauche lorsque la longueur de la chaîne est dépassée.

Si le start est négatif, la chaîne retournée commencera par le caractère start à partir de la fin de la chaîne.

Exemple:

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

//output: 0000098765

Quand utiliser:

  1. Lorsqu’il y a une longueur fixe de la chaîne de sortie.
  2. Ajout de zéros lorsque la chaîne est inférieure à la longueur.

printf()/sprintf() pour ajouter des zéros de tête en PHP

Pour rembourrer une sortie pour une longueur fixe, lorsque l’entrée est inférieure à la longueur, et renvoyer la chaîne lorsque l’entrée est supérieure.

Exemple:

$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

Dans l’exemple, la longueur fixe est fixée à 10 et la longueur d’entrée est de 9, donc il ajoute un zéro à gauche si on utilise “printtf()/sprintf”.

sprintf() Valeurs des paramètres

Paramètre Description
format (obligatoire) La chaîne de caractères et la façon de formater les variables.
Valeurs de formatage possibles :
%% - Signe de pourcentage
%b - Binaire
%c - Caractère référencé à ASCII
%d - Nombre décimal (négatif ou positif)
%e - Notation scientifique minuscule
%E - Notation scientifique majuscule
%u - Nombre décimal non signé
%f - Float number (local settings aware)
%F - Float number (not local settings aware)
%g - version courte de %e et %f
%G - version courte de %E et %F
%o - Octal
%s - String
%x - Hexadécimal (minuscules)
%X - Hexadécimal (majuscules)
arg1 (obligatoire) A insérer au premier signe de %.
arg2 (facultatif) A insérer au deuxième signe de %.
argg++ (facultatif) A insérer au troisième, quatrième, etc. %-signe

Note:

  • Si la longueur de la chaîne de saisie est supérieure ou égale à la longueur du bloc, elle ne retourne que la chaîne - aucun caractère n’est omis.
  • Le remplissage n’est ajouté que si la longueur de l’entrée est inférieure à la longueur du remplissage.

str_pad() pour ajouter des zéros de tête en PHP

Cette méthode consiste à ajouter à une chaîne une nouvelle longueur de caractères spécifiés.

Exemple:

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

L’exemple ci-dessus ajoutera le zéro à la chaîne spécifiée jusqu’à ce qu’elle corresponde à la longueur spécifiée (qui est 7 dans ce cas).

str_pad() Liste des paramètres

Paramètre Description
string La ficelle à rembourrer
length Spécifie la nouvelle longueur de la chaîne. Note: Si la valeur est inférieure à la longueur de la chaîne, il ne se passera rien.
pad_string (chaîne de caractères) Spécifie la ficelle à utiliser pour le rembourrage. La valeur par défaut est l’espace.
pad_type Indique où insérer la chaîne.
Accepted Values:
STR_PAD_BOTH - Cela permet d’insérer les deux côtés de la chaîne.
STR_PAD_LEFT - Insertion du côté gauche de la chaîne.
STR_PAD_RIGHT - Insertion du côté droit de la chaîne.

Article connexe - PHP Function