(PHP 4, PHP 5, PHP 7, PHP 8)
printf — Output a formatted string
format
A string de formato é composta de zero ou mais diretivas: caracteres comuns (excluindo %
) que são copiados diretamente para o resultado e especificações de conversão, cada uma das quais resulta na busca de seu próprio parâmetro.
Uma especificação de conversão segue este protótipo: %[argnum$][flags][width][.precision]especificador
.
Um número inteiro seguido por um cifrão $
, para especificar qual o número de argumento a tratar na conversão.
Flag | Descrição |
---|---|
- | Justificar à esquerda dentro da largura de campo especificada; A justificação à direita é o padrão. |
+ | Prefixa números positivos com um sinal de mais + ; Por padrão, apenas números negativos são prefixados com um sinal negativo. |
(espaço) | Preenche o resultado com espaços. Este é o padrão. |
0 | Preenche números com zeros apenas à esquerda. Com os especificadores s , também pode preencher com zeros à direita. |
' (char) | Preenche o resultado com o caractere (char). |
Um número inteiro que define em quantos caracteres (mínimo) esta conversão deve resultar, ou *
. Se *
for usado, a largura será fornecida como um valor inteiro adicional precedendo aquele formatado pelo especificador.
Um ponto .
opcionalmente seguido por um número inteiro ou *
, cujo significado depende do especificador:
e
, E
, f
e F
: este é o número de dígitos a serem impressos após o ponto decimal (por padrão, é 6). g
, G
, h
e H
: este é o número máximo de dígitos significativos a serem impressos. s
: atua como um ponto de corte, definindo um limite máximo de caracteres para a string. Nota: Se o ponto for especificado sem um valor explícito para precisão, 0 é assumido. Se
*
for usado, a precisão é fornecida como um valor inteiro adicional precedendo aquele formatado pelo especificador.
Especificador | Descrição |
---|---|
% | Um caractere literal de porcentagem. Nenhum argumento é necessário. |
b | O argumento é tratado como um número inteiro e apresentado como um número binário. |
c | O argumento é tratado como um número inteiro e apresentado como o caractere com aquele código ASCII. |
d | O argumento é tratado como um número inteiro e apresentado como um número decimal (com sinal). |
e | O argumento é tratado como notação científica (por exemplo, 1.2e+2). |
E | Como o especificador e , mas usa letra maiúscula (por exemplo, 1.2E+2). |
f | O argumento é tratado como um float e apresentado como um número de ponto flutuante (com reconhecimento da localidade). |
F | O argumento é tratado como um float e apresentado como um número de ponto flutuante (sem reconhecimento da localidade). |
g | Formato geral. Deixa P igual à precisão se for diferente de zero, 6 se a precisão for omitida, ou 1 se a precisão for zero. Então, se uma conversão com estilo E tivesse um expoente de X: Se P > X ≥ −4, a conversão é com estilo f e precisão P − (X + 1). Caso contrário, a conversão é com estilo e e precisão P − 1. |
G | Como o especificador g , mas usa E e f . |
h | Como o especificador g , mas usa F . Disponível a partir do PHP 8.0.0. |
H | Como o especificador g , mas usa E e F . Disponível a partir do PHP 8.0.0. |
o | O argumento é tratado como um número inteiro e apresentado como um número octal. |
s | O argumento é tratado e apresentado como uma string. |
u | O argumento é tratado como um número inteiro e apresentado como um número decimal sem sinal. |
x | O argumento é tratado como um número inteiro e apresentado como um número hexadecimal (com letras minúsculas). |
X | O argumento é tratado como um número inteiro e apresentado como um número hexadecimal (com letras maiúsculas). |
O especificador de tipo c
ignora preenchimento e largura.
Tentar usar uma combinação dos especificadores de string e largura com conjuntos de caracteres que requerem mais de um byte por caractere pode resultar em resultados inesperados.
As variáveis serão forçadas a um tipo adequado para o especificador:
Tipo | Especificadores |
---|---|
string | s |
int | d , u , c , o , x , X , b |
float | e , E , f , F , g , G , h , H |
values
Returns the length of the outputted string.
A partir do PHP 8.0.0, um erro ValueError será lançado se o número de argumentos for zero. Antes do PHP 8.0.0, um E_WARNING
era emitido.
A partir do PHP 8.0.0, um erro ValueError será lançado se [width]
for menor que zero ou maior que PHP_INT_MAX
. Antes do PHP 8.0.0, um E_WARNING
era emitido.
A partir do PHP 8.0.0, um erro ValueError será lançado se [precision]
for menor que zero ou maior que PHP_INT_MAX
. Antes do PHP 8.0.0, um E_WARNING
era emitido.
A partir do PHP 8.0.0, um erro ArgumentCountError será lançado quando menos argumentos do que o necessário forem fornecidos. Antes do PHP 8.0.0, false
era retornado e um E_WARNING
era emitido.
Versão | Descrição |
---|---|
8.0.0 | Esta função não retorna mais false em caso de falha. |
8.0.0 | Lança um erro ValueError se o número de argumentos for zero; anteriormente, esta função emitia um E_WARNING . |
8.0.0 | Lança um erro ValueError se [width] for menor que zero ou maior que PHP_INT_MAX ; anteriormente, esta função emitia um E_WARNING . |
8.0.0 | Lança um erro ValueError se [precision] for menor que zero ou maior que PHP_INT_MAX ; anteriormente, esta função emitia um E_WARNING . |
8.0.0 | Lança um erro ArgumentCountError quando menos argumentos do que o necessário são fornecidos; anteriormente, esta função emitia um E_WARNING . |
Exemplo #1 printf(): various examples
<?php
$n = 43951789;
$u = -43951789;
$c = 65; // ASCII 65 is 'A'
// notice the double %%, this prints a literal '%' character
printf("%%b = '%b'\n", $n); // binary representation
printf("%%c = '%c'\n", $c); // print the ascii character, same as chr() function
printf("%%d = '%d'\n", $n); // standard integer representation
printf("%%e = '%e'\n", $n); // scientific notation
printf("%%u = '%u'\n", $n); // unsigned integer representation of a positive integer
printf("%%u = '%u'\n", $u); // unsigned integer representation of a negative integer
printf("%%f = '%f'\n", $n); // floating point representation
printf("%%o = '%o'\n", $n); // octal representation
printf("%%s = '%s'\n", $n); // string representation
printf("%%x = '%x'\n", $n); // hexadecimal representation (lower-case)
printf("%%X = '%X'\n", $n); // hexadecimal representation (upper-case)
printf("%%+d = '%+d'\n", $n); // sign specifier on a positive integer
printf("%%+d = '%+d'\n", $u); // sign specifier on a negative integer
?>
O exemplo acima produzirá:
%b = '10100111101010011010101101' %c = 'A' %d = '43951789' %e = '4.39518e+7' %u = '43951789' %u = '4251015507' %f = '43951789.000000' %o = '247523255' %s = '43951789' %x = '29ea6ad' %X = '29EA6AD' %+d = '+43951789' %+d = '-43951789'
Exemplo #2 printf(): string specifiers
<?php
$s = 'monkey';
$t = 'many monkeys';
printf("[%s]\n", $s); // standard string output
printf("[%10s]\n", $s); // right-justification with spaces
printf("[%-10s]\n", $s); // left-justification with spaces
printf("[%010s]\n", $s); // zero-padding works on strings too
printf("[%'#10s]\n", $s); // use the custom padding character '#'
printf("[%'#*s]\n", 10, $s); // Provide the padding width as an additional argument
printf("[%10.9s]\n", $t); // right-justification but with a cutoff of 8 characters
printf("[%-10.9s]\n", $t); // left-justification but with a cutoff of 8 characters
?>
O exemplo acima produzirá:
[monkey] [ monkey] [monkey ] [0000monkey] [####monkey] [####monkey] [ many monk] [many monk ]