<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >sprintf</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" TITLE="Manual do PHP" HREF="index.html"><LINK REL="UP" TITLE="String" HREF="ref.strings.html"><LINK REL="PREVIOUS" TITLE="soundex" HREF="function.soundex.html"><LINK REL="NEXT" TITLE="sscanf" HREF="function.sscanf.html"><META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=UTF-8"></HEAD ><BODY CLASS="refentry" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >Manual do PHP</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="function.soundex.html" ACCESSKEY="P" >Anterior</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="function.sscanf.html" ACCESSKEY="N" >Próxima</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><H1 ><A NAME="function.sprintf" ></A >sprintf</H1 ><DIV CLASS="refnamediv" ><A NAME="AEN220543" ></A ><P > (PHP 3, PHP 4, PHP 5)</P >sprintf -- Retorna uma string formatada</DIV ><DIV CLASS="refsect1" ><A NAME="AEN220546" ></A ><H2 >Descrição</H2 >string <B CLASS="methodname" >sprintf</B > ( string format [, mixed args] )<BR ></BR ><P > Retorna uma string produzida de acordo com a string de formatação <CODE CLASS="parameter" >format</CODE >. </P ><P > A string e formatação é composta de zero ou mais diretivas: caracteres normais (excluindo <TT CLASS="literal" >%</TT >) que são copiados diretamente para o resultado, e <SPAN CLASS="emphasis" ><I CLASS="emphasis" >especificações de conversão</I ></SPAN >, cada um dos quais resulta em obter o seu próprio parâmetro. Isto se aplica para <B CLASS="function" >sprintf()</B > e <A HREF="function.printf.html" ><B CLASS="function" >printf()</B ></A >. </P ><P > Cada especificação de conversão consiste em um símbolo de porcento (<TT CLASS="literal" >%</TT >), seguido por um ou mais destes elementos em ordem: <P ></P ><OL TYPE="1" ><LI ><P > Um <SPAN CLASS="emphasis" ><I CLASS="emphasis" >especificador de prenchimento</I ></SPAN > opcional que diz qual caractere será usado para prencher o resultado para o tamanho certo. Isto pode ser um espaço ou <TT CLASS="literal" >0</TT > (zero character). O padrão é prencher com espaços. Um caractere alternativo de prenchimento pode ser especificado colocando uma aspa simples (<TT CLASS="literal" >'</TT >) antes. Veja os exemplos abaixo. </P ></LI ><LI ><P > Um <SPAN CLASS="emphasis" ><I CLASS="emphasis" >especificador de alinhamento</I ></SPAN > opcional que diz se o resultado deve ser alinhado a esquerda ou a direita. O padrão é alinhar a direita; um caractere <TT CLASS="literal" >-</TT > fará com que seja alinhado a esquerda. </P ></LI ><LI ><P > Um número opcional, um <SPAN CLASS="emphasis" ><I CLASS="emphasis" >especificador de tamanho</I ></SPAN > que diz quantos caracteres (mínimo) deve resultar desta conversão. </P ></LI ><LI ><P > Um <SPAN CLASS="emphasis" ><I CLASS="emphasis" >especificador de precisão</I ></SPAN > opcional que diz quantos digitos decimais devem ser mostrados para números de ponto flutuante. Esta opção não tem efeito para outros tipos que não sejam <A HREF="language.types.float.html" ><B CLASS="type" >float</B ></A >. (Outra função útil para formatar números é <A HREF="function.number-format.html" ><B CLASS="function" >number_format()</B ></A >.) </P ></LI ><LI ><P > Um <SPAN CLASS="emphasis" ><I CLASS="emphasis" >especificador de tipo</I ></SPAN > que diz que o argumento deve ser tratado como do tipo. Os tipos possivéis são: <P ></P ><TABLE BORDER="0" ><TBODY ><TR ><TD > <TT CLASS="literal" >%</TT > - Um caractere porcento. Não é requerido neenhum argumento. </TD ></TR ><TR ><TD > <TT CLASS="literal" >b</TT > - O argumento é tratado com um inteiro, e mostrado como um binário. </TD ></TR ><TR ><TD > <TT CLASS="literal" >c</TT > - O argumento é tratado como um inteiro, e mostrado como o caractere ASCII correspondente. </TD ></TR ><TR ><TD > <TT CLASS="literal" >d</TT > - O argumento é tratado como um inteiro, e mostrado como um número decimal com sinal. </TD ></TR ><TR ><TD > <TT CLASS="literal" >u</TT > - O argumento é tratado com um inteiro, e mostrado como um número decimal sem sinal. </TD ></TR ><TR ><TD > <TT CLASS="literal" >f</TT > - O argumento é tratado como um <A HREF="language.types.float.html" ><B CLASS="type" >float</B ></A >, e mostrado como um número de ponto flutuante. </TD ></TR ><TR ><TD > <TT CLASS="literal" >o</TT > - O argumento é tratado com um inteiro, e mostrado como un número octal. </TD ></TR ><TR ><TD > <TT CLASS="literal" >s</TT > - O argumento é tratado e mostrado como uma string. </TD ></TR ><TR ><TD > <TT CLASS="literal" >x</TT > - O argumento é tratado como um inteiro, e mostrado como um número hexadecimal (com as letras minúsculas). </TD ></TR ><TR ><TD > <TT CLASS="literal" >X</TT > - O argumento é tratado como um inteiro, e mostrado como um número hexadecimal (com as letras maiúsculas). </TD ></TR ></TBODY ></TABLE ><P ></P > </P ></LI ></OL > </P ><P > Apartir do PHP 4.0.6 a string de formatação suporta numeração/troca. Aqui esta um exemplo: <TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" CLASS="EXAMPLE" ><TR ><TD ><DIV CLASS="example" ><A NAME="AEN220610" ></A ><P ><B >Exemplo 1. Troca de argumentos</B ></P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><code><font color="#000000"> <font color="#0000BB"><?php<br />$format </font><font color="#007700">= </font><font color="#DD0000">"There are %d monkeys in the %s"</font><font color="#007700">;<br /></font><font color="#0000BB">printf</font><font color="#007700">(</font><font color="#0000BB">$format</font><font color="#007700">,</font><font color="#0000BB">$num</font><font color="#007700">,</font><font color="#0000BB">$location</font><font color="#007700">);<br /></font><font color="#0000BB">?></font> </font> </code></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE > Este deve mostrar, "There are 5 monkeys in the tree". Mas imagine que nós estejamos criando a string de formatação em um arquivo separado, normalmente para internacionalizar e rescrevemos como: <TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" CLASS="EXAMPLE" ><TR ><TD ><DIV CLASS="example" ><A NAME="AEN220613" ></A ><P ><B >Exemplo 2. Troca de argumentos</B ></P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><code><font color="#000000"> <font color="#0000BB"><?php<br />$format </font><font color="#007700">= </font><font color="#DD0000">"The %s contains %d monkeys"</font><font color="#007700">;<br /></font><font color="#0000BB">printf</font><font color="#007700">(</font><font color="#0000BB">$format</font><font color="#007700">,</font><font color="#0000BB">$num</font><font color="#007700">,</font><font color="#0000BB">$location</font><font color="#007700">);<br /></font><font color="#0000BB">?></font> </font> </code></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE > Agora nós temos um problema. A ordem dos argumentos na string de formatação não combina com os argumentos no código. Nós gostariamos de deixar o código como esta e simplesmente indicar na string de formatação quais argumentos pertencem aonde. Podemos escrever a string de formatação assim: <TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" CLASS="EXAMPLE" ><TR ><TD ><DIV CLASS="example" ><A NAME="AEN220616" ></A ><P ><B >Exemplo 3. Troca de argumento</B ></P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><code><font color="#000000"> <font color="#0000BB"><?php<br />$format </font><font color="#007700">= </font><font color="#DD0000">"The %2\$s contains %1\$d monkeys"</font><font color="#007700">;<br /></font><font color="#0000BB">printf</font><font color="#007700">(</font><font color="#0000BB">$format</font><font color="#007700">,</font><font color="#0000BB">$num</font><font color="#007700">,</font><font color="#0000BB">$location</font><font color="#007700">);<br /></font><font color="#0000BB">?></font> </font> </code></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE > Um beneficio adicional disto é ue você pode repetir os especificadores de conversão sem adicionar mais argumentos em seu código. Por exemplo: <TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" CLASS="EXAMPLE" ><TR ><TD ><DIV CLASS="example" ><A NAME="AEN220619" ></A ><P ><B >Exemplo 4. Troca de argumento</B ></P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><code><font color="#000000"> <font color="#0000BB"><?php<br />$format </font><font color="#007700">= </font><font color="#DD0000">"The %2\$s contains %1\$d monkeys.<br /> That's a nice %2\$s full of %1\$d monkeys."</font><font color="#007700">;<br /></font><font color="#0000BB">printf</font><font color="#007700">(</font><font color="#0000BB">$format</font><font color="#007700">, </font><font color="#0000BB">$num</font><font color="#007700">, </font><font color="#0000BB">$location</font><font color="#007700">);<br /></font><font color="#0000BB">?></font> </font> </code></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE > </P ><P > Veja também <A HREF="function.printf.html" ><B CLASS="function" >printf()</B ></A >, <A HREF="function.sscanf.html" ><B CLASS="function" >sscanf()</B ></A >, <A HREF="function.fscanf.html" ><B CLASS="function" >fscanf()</B ></A >, <A HREF="function.vsprintf.html" ><B CLASS="function" >vsprintf()</B ></A > e <A HREF="function.number-format.html" ><B CLASS="function" >number_format()</B ></A >. </P ></DIV ><DIV CLASS="refsect1" ><A NAME="AEN220628" ></A ><H2 >Examplos</H2 ><P > <TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" CLASS="EXAMPLE" ><TR ><TD ><DIV CLASS="example" ><A NAME="AEN220631" ></A ><P ><B >Exemplo 5. <B CLASS="function" >sprintf()</B >: inteiros prenchidos com zero</B ></P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><code><font color="#000000"> <font color="#0000BB"><?php<br />$isodate </font><font color="#007700">= </font><font color="#0000BB">sprintf</font><font color="#007700">(</font><font color="#DD0000">"%04d-%02d-%02d"</font><font color="#007700">, </font><font color="#0000BB">$year</font><font color="#007700">, </font><font color="#0000BB">$month</font><font color="#007700">, </font><font color="#0000BB">$day</font><font color="#007700">);<br /></font><font color="#0000BB">?></font> </font> </code></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE > <TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" CLASS="EXAMPLE" ><TR ><TD ><DIV CLASS="example" ><A NAME="AEN220635" ></A ><P ><B >Exemplo 6. <B CLASS="function" >sprintf()</B >: formatando dinheiro</B ></P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><code><font color="#000000"> <font color="#0000BB"><?php<br />$money1 </font><font color="#007700">= </font><font color="#0000BB">68.75</font><font color="#007700">;<br /></font><font color="#0000BB">$money2 </font><font color="#007700">= </font><font color="#0000BB">54.35</font><font color="#007700">;<br /></font><font color="#0000BB">$money </font><font color="#007700">= </font><font color="#0000BB">$money1 </font><font color="#007700">+ </font><font color="#0000BB">$money2</font><font color="#007700">;<br /></font><font color="#FF8000">// echo $money irá mostrar "123.1";<br /></font><font color="#0000BB">$formatted </font><font color="#007700">= </font><font color="#0000BB">sprintf</font><font color="#007700">(</font><font color="#DD0000">"%01.2f"</font><font color="#007700">, </font><font color="#0000BB">$money</font><font color="#007700">);<br /></font><font color="#FF8000">// echo $formatted irá mostrar "123.10"<br /></font><font color="#0000BB">?></font> </font> </code></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE > </P ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="function.soundex.html" ACCESSKEY="P" >Anterior</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >Principal</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="function.sscanf.html" ACCESSKEY="N" >Próxima</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >soundex</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="ref.strings.html" ACCESSKEY="U" >Acima</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >sscanf</TD ></TR ></TABLE ></DIV ></BODY ></HTML >