Cómo formatear correctamente un número con ceros a la izquierda en PHP

Ralfh Bryan Perez 30 enero 2023
  1. Usando una cadena para sustituir el número
  2. substr() para agregar ceros iniciales en PHP
  3. printf()/sprintf() para agregar ceros iniciales en PHP
  4. str_pad() para agregar ceros iniciales en PHP
Cómo formatear correctamente un número con ceros a la izquierda en PHP

En PHP, los números o enteros con ceros a la izquierda pueden tener diferentes valores con resultados inesperados.

Ejemplo:

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

Para asegurarse de que el número no pierda su significado natural, hay varias formas de intentar como usar una cadena en lugar de un número o usando diferentes funciones como substr, printf() / sprintf() y str_pad.

Usando una cadena para sustituir el número

El enfoque más fácil; simplemente usar la cadena como sustituto del número.

$number = "0987654321";

Cuándo usar:

  1. No se requiere la longitud de la salida.
  2. No hay excepción al número que siempre necesita un cero inicial.

substr() para agregar ceros iniciales en PHP

Este método recorta los números de la izquierda cuando la longitud de la cadena se excede.

Si el index es negativo, la cadena devuelta comenzará con el carácter index del final de la cadena.

Ejemplo:

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

//output: 0000098765

Cuándo usar:

  1. Cuando hay una longitud fija de la cadena de salida.
  2. Añadiendo ceros cuando la cadena es menor que la longitud.

printf()/sprintf() para agregar ceros iniciales en PHP

Para rellenar una salida de longitud fija, cuando la entrada es menor que la longitud, y devolver la cadena cuando la entrada es mayor.

Ejemplo:

$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

En el ejemplo, la longitud fija se establece en 10 y la longitud de entrada es 9, por lo que añade un cero a la izquierda si se utiliza printf()/sprintf.

sprintf() Valores de los parámetros

Parámetro Descripción
format (Requerido) La cadena y cómo dar formato a las variables.
Valores de formato posibles:
%%% - Signo de porcentaje
%b - Binario
%c - Carácter referido a ASCII
%d - Número decimal (negativo o positivo)
%e - Notación científica minúscula
%E - Notación científica mayúscula
%u - Número decimal sin signo
%f - Número de float (ajustes locales conscientes)
%F - Número de float (no ajustes locales conscientes)
%g - versión más corta de %e y %f
%G - versión corta de %E y %F
%o - Octal
%s - String
%x - Hexadecimal (minúsculas)
%X - Hexadecimal (mayúsculas)
arg1 (Requerido) Se insertará en el primer signo de porcentaje
arg2 (Opcional) Se insertará en el segundo signo de porcentaje
argg++ (Opcional) Se insertará en el tercer, cuarto, etc. %-signo

Nota:

  • Si la longitud de la cadena de entrada es mayor o igual a la longitud del pad, sólo devolverá la cadena - no se omitirá ningún carácter.
  • El relleno sólo se agrega si la longitud de la entrada es menor que la longitud del relleno.

str_pad() para agregar ceros iniciales en PHP

Este método rellenará una cadena con una nueva longitud de caracteres especificados.

Ejemplo:

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

El ejemplo anterior añadirá el cero a la cadena especificada hasta que coincida con la longitud especificada (que es 7 en este caso).

str_pad() Lista de parámetros

Parámetro Descripción
string La cadena para acolchar
length Especifica la nueva longitud de la cadena. **Nota: **Si el valor es menor que la longitud de la cadena, no pasará nada.
pad_string Especifica la cadena a utilizar para el acolchado. El valor predeterminado es el espacio en blanco.
pad_type Especifica donde rellenar la cadena.
Valores aceptados:
STR_PAD_BOTH - Esto rellenará ambos lados de la cadena.
STR_PAD_LEFT - Rellena el lado izquierdo de la cadena
STR_PAD_RIGHT - Rellena el lado derecho de la cadena

Artículo relacionado - PHP Function