HOWTO · PHP
Como formatar corretamente um número com os principais zeros em PHP
Diferentes maneiras de formatar um número com zeros líderes usando várias funções em PHP.
Nesta página
Em PHP, números ou números inteiros com zeros à esquerda podem ter valores diferentes com resultados inesperados.
Exemplo:
$number = 0987654321; //this is an octal number
$number = 0x987654321 // this is a hexadecimal number
$number = 0b0987654321 // this is a binary number
Para garantir que o número não perca seu significado natural, há várias maneiras de tentar como utilizar uma string ao invés de um número ou utilizando diferentes funções como substr, printf() / sprintf() e str_pad.
Utilize uma string para substituir o número
A abordagem mais fácil; simplesmente usar cordel como um substituto para o número.
$number = "0987654321";
Quando usar:
- Não é necessário o comprimento da saída.
- Não há exceção para o número que sempre precisa de um zero inicial.
substr() para Adicionar Zeros Líderes em PHP
Este método prende os números da esquerda quando o comprimento da string excedeu.
Se o start for negativo, a string retornada começará a partir do caracter start do final do string.
Exemplo:
$number = 98765;
$length = 10;
$string = substr(str_repeat(0, $length).$number, - $length);
//output: 0000098765
Quando utilizar:
- Quando há um comprimento fixo da string de saída.
- Adicionar zeros quando a string é menor que o comprimento.
printf()/sprintf() para adicionar zeros principais em PHP
Para estofar uma saída para um comprimento fixo, quando a entrada é menor que o comprimento, e retornar a string quando a entrada é maior.
Exemplo:
$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
No exemplo, o comprimento fixo é ajustado para 10 e o comprimento de entrada é 9, então adiciona um zero à esquerda se utilizar printf()/sprintf.
sprintf() Valores dos parâmetros
| Parameter | Descrição |
|---|---|
format (Obrigatório) |
A string e como formatar as variáveis. Possíveis valores de formato: %% - Sinal percentual%b - Binário%c - Caracteres referidos a ASCII%d - Número decimal (negativo ou positivo)%e - Notação científica em minúsculas%E - Notação científica em maiúsculas%u - Número decimal sem sinal%f - Número de flutuação (não sabe a configuração local)%F - Número de flutuação (não sabe a configuração local)%g - versão mais curta de %e e %f%G - versão mais curta de %E e %F%o - Octal%s - String%x - Hexadecimal (minúsculas)%X - Hexadecimal (maiúsculas) |
arg1 (Obrigatório) |
A ser inserido no primeiro sinal de %. |
arg2 (Opcional) |
A ser inserido no segundo sinal de %. |
argg++ (Opcional) |
A ser inserido no terceiro, quarto, etc. %-sinal |
Nota:
- Se o comprimento da string de entrada for maior ou igual ao comprimento da almofada, somente retornará a string - nenhum caracter será omitido.
- A almofada só é adicionada se o comprimento da entrada for menor do que o comprimento da almofada.
str_pad() para Adicionar Zeros Líderes em PHP
Este método irá preencher um cordel com um novo comprimento de caracteres especificados.
Exemplo:
$length = 7;
$string = "12345";
echo str_pad($string,$length,"0", STR_PAD_LEFT);
//output: 0012345
O exemplo acima adicionará o zero à string especificada até que ela corresponda ao comprimento especificado (que é 7 neste caso).
str_pad()Lista de Parâmetros*.
| Parâmetro | Descrição |
|---|---|
string |
O string a almofada |
length |
Especifica o novo comprimento da string. **Nota: **Se o valor for menor do que o comprimento da string, nada acontecerá. |
pad_string |
Especifica o string a ser usado para estofamento. O valor padrão é o espaço em branco. |
pad_type |
Especifica onde almofadar a string. Valores aceitos: STR_PAD_BOTH - Isto irá almofadar ambos os lados da string.STR_PAD_LEFT - Almofada do lado esquerdo da stringSTR_PAD_RIGHT - Almofada do lado direito da string |