Como formatar corretamente um número com os principais zeros em PHP

Ralfh Bryan Perez 30 janeiro 2023
  1. Utilize uma string para substituir o número
  2. substr() para Adicionar Zeros Líderes em PHP
  3. printf()/sprintf() para adicionar zeros principais em PHP
  4. str_pad() para Adicionar Zeros Líderes em PHP
Como formatar corretamente um número com os principais zeros em PHP

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:

  1. Não é necessário o comprimento da saída.
  2. 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:

  1. Quando há um comprimento fixo da string de saída.
  2. 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 string
STR_PAD_RIGHT - Almofada do lado direito da string

Artigo relacionado - PHP Function