Cómo formatear correctamente un número con ceros a la izquierda en PHP
- Usando una cadena para sustituir el número
-
substr()
para agregar ceros iniciales en PHP -
printf()
/sprintf()
para agregar ceros iniciales en PHP -
str_pad()
para agregar ceros iniciales 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:
- No se requiere la longitud de la salida.
- 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:
- Cuando hay una longitud fija de la cadena de salida.
- 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 cadenaSTR_PAD_RIGHT - Rellena el lado derecho de la cadena |