Fala sobre a maioria das funções relacionadas com exibir valores em PHP. Tais como printf, print, echo, sprintf, vsprintf, vprintf, e demais da categoria.

Agora que já criamos nosso servidor, estipulamos um editor de textos padrão e criamos nosso primeiro script em PHP, temos que entender como funciona a linguagem. Vamos começar pelas aspas e o comando echo, que tratam de uma das partes mais utilizadas em todos os scripts em PHP, a exibição de conteúdo na tela do navegador.

Observação: Antes de continuar a leitura, crie uma pasta dentro da nossa pasta “php” (que está dentro da pasta “cursos”) chamada “aula_2”. Dentro dessa última, crie um arquivo chamado “index.php” e teste todos os scripts que criaremos nessa aula nesse arquivo. (Vimos sobre isso na primeira aula).

Echo em PHP

Como vimos em nossa primeira aula, tudo o que é parte do código PHP deve estar entre as tags de abertura da linguagem <?php e ?>. Por exemplo, se eu abrir o arquivo index.php e digitar o seguinte:

<?php
echo 1;
?>

E abrir o endereço http://127.0.0.1/cursos/php/aula_2/ em meu navegador, verei exatamente o número 1 na tela.

Isso acontece porque o comando echo serve simplesmente para exibir algo na tela quando seu programa for executado, porém, você deve tomar alguns cuidados antes de utilizar este comando.

Como você pode utilizar o comando echo para exibir strings, é necessário que você utilize aspas simples ou duplas para que os valores que você deseja exibir, não sejam interpretados como linhas de código pelo interpretador do PHP. Nesse caso, sempre que for necessário exibir um texto comum, você deve envolver o conteúdo do texto entre aspas simples ou duplas.

Veja um exemplo:

<?php
echo 'Posso exibir quase qualquer coisa aqui dentro.';
?>

Veja o que acontece no trecho acima:

  • <?php – A tag de abertura do PHP;
  • echo – Um dos comandos mais utilizados em PHP, exibe algo na tela;
  • Aspas simples (‘) – Indica que estou abrindo um container onde posso escrever praticamente qualquer coisa;
  • Texto: Posso exibir quase qualquer coisa aqui dentro.
  • Aspas simples (‘) – Indica que estou fechando o container que havia aberto anteriormente;
  • Ponto e vírgula (;) – Sempre que você terminar de escrever um código em PHP, deve fechar o trecho com um ponto e vírgula;
  • ?> – Tag de fechamento do código PHP.

Se eu executar o trecho acima em meu navegador, o texto “Posso exibir quase qualquer coisa aqui dentro.” será mostrado na tela.

Se eu quiser exibir vários textos em sequência, posso fazer da seguinte maneira:

<?php
echo 'Texto 1 ';
echo 'Texto 2 ';
echo 'Texto 3 ';
echo 'Texto 4 ';
echo 'Texto 5 ';
?>

Se você executar o trecho acima em seu navegador, verá todos os textos que estão entre as aspas, porém, em uma única linha. Isso acontece porque nada que está fora das aspas é considerado pelo comando echo, assim, não existem quebras de linhas, apenas os próprios espaços que estão dentro das aspas.

Se você quisesse que os espaços aparecessem, poderia fazer da seguinte maneira:

<?php
echo 'Texto 1
Texto 2 
Texto 3 
Texto 4 
Texto 5';
?>

Perceba que antes de fechar as aspas e utilizar o ponto e vírgula para finalizar minha linha de código, eu pulei as linhas dentro do comando echo, assim obtive o seguinte resultado:

Texto 1
Texto 2 
Texto 3 
Texto 4 
Texto 5

No entanto, você só vai conseguir visualizar as quebras de linha se exibir o código fonte do seu navegador (CTRL + U), isso acontece porque seu navegador está renderizando HTML e não texto puro (como estamos exibindo). Se quiséssemos que o navegador mostrasse um texto em cada linha, deveríamos escrever uma tag de quebra de linha ao final de cada linha. Por exemplo:

<?php
echo 'Texto 1 <br />
Texto 2  <br />
Texto 3  <br />
Texto 4  <br />
Texto 5';
?>

Ou:

<?php
echo 'Texto 1 <br />';
echo 'Texto 2 <br />';
echo 'Texto 3 <br />';
echo 'Texto 4 <br />';
echo 'Texto 5 ';
?>

A tag <br /> fará o serviço de pular uma linha cada vez que o navegador a encontrar, portanto, teremos o seguinte:

Exemplo do comando echo em PHP

E se analisarmos o código-fonte do navegador, veremos o seguinte:

Exemplo do código-fonte do navegador

Exatamente o que queríamos.

Exibindo HTML dentro do comando echo

Se você precisar exibir HTML dentro do comando echo, na verdade não precisa fazer nada além de escrever o que precisa. Veja um exemplo:

<?php
echo '<h1>Este é meu cabeçalho em HTML</h1>';
echo '<p>Este é meu parágrafo <b>com isso em negrito</b></p>';
?>

Isso vai gerar exatamente o HTML que você enviou dentro do comando echo, ou seja:

HTML gerado com echo em PHP

Porém, pode acontecer ao contrário e você precisar exibir HTML fora do contexto do PHP. Para esses casos é mais simples ainda, basta fechar abrir e fechar as tags de abertura do PHP sempre que precisar escrever algum trecho em PHP.

Vamos ver no código como ficaria:

<!doctype html>
<html>
	<head>
		<meta charset="UTF-8">
		
		<title><?php echo 'título';?></title>
	</head>
	<body>
		<h1>Cabeçalho</h1>
		<?php echo '<p>Qualquer coisa em PHP</p>';?>
	</body>
</html>

Perceba no trecho acima, que estou intercalando PHP e HTML, com isso, posso abrir e fechar as tags do PHP quantas vezes forem necessárias.

Aspas e echo em PHP

Conforme descrevi anteriormente, você deve utilizar aspas simples ou duplas sempre que for necessário escrever algo que o PHP não entende como código, como um texto simples (também chamado de string). Porém, e se esse texto também tiver aspas simples ou duplas?

Veja o que acontece:

<?php
echo 'Meu texto tem 'aspas'';
?>

No trecho acima, as aspas que estão dentro do texto estão fazendo o código se comportar de maneira incorreta, isso porque a primeira aspa simples do texto, está, na verdade, fechando a aspas simples do código.

Isso irá gerar um erro de sintaxe:

Parse error: syntax error, unexpected ‘aspas’ (T_STRING), expecting ‘,’ or ‘;’ in E:ProgramasEasyPHPdatalocalwebcursosphpaula_2index.php on line 2

Para resolver este problema, existem duas maneira:

  • Intercalar aspas duplas e aspas simples;
  • Utilizar a barra invertida () para escapar as aspas que não forem do código

Na primeira opção, podemos abrir o nosso código aspas duplas ao invés de aspas simples, assim, as aspas do texto não afetarão as aspas do código:

<?php
echo "Meu texto tem 'aspas'";
?>

O mesmo acontece quando utilizamos aspas duplas dentro do texto, basta alterar as aspas do código para aspas simples:

<?php
echo 'Meu texto tem "aspas"';
?>

Porém, pode chegar um dia em que não existe outra possibilidade, é necessário colocar as mesmas aspas do código dentro do texto (ou vice-versa). Nesse caso, você pode utilizar a barra invertida () como caractere de escape antes de cada uma das aspas do texto.

<?php
echo 'Meu texto tem 'aspas'';
?>

As barras invertidas não aparecem na saída do comando echo, simplesmente servem para escapar as aspas simples ou duplas que forem utilizadas na sua string dentro do código.

Considerações finais sobre as aspas

Apesar do texto acima estar bem detalhado, vale ressaltar alguns pontos interessantes sobre as aspas:

  • Não é permitido abrir com aspas simples e fechar com aspas duplas (ou vice-versa):
<?php
echo 'Meu texto'; // Correto ''
echo "Meu texto"; // Correto ""
echo 'Meu texto"; // Incorreto '"
echo "Meu texto'; // Incorreto "'
?>
  • Utilize aspas intercaladas quando seu texto tiver aspas:
<?php
echo 'Meu texto com "aspas"'; // Correto
echo "Meu texto com 'aspas'"; // Correto
echo 'Meu texto com 'aspas''; // Incorreto
echo "Meu texto com "aspas""; // Incorreto
?>
  • Utilize a barra invertida () para escapar aspas se for necessário utilizar as mesmas aspas no texto e no código;
echo 'Meu texto com "aspas"'; // Correto
echo "Meu texto com 'aspas'"; // Correto
echo 'Meu texto com 'aspas''; // Correto
echo "Meu texto com "aspas""; // Correto

Comentários em PHP

Normalmente quando escrevemos códigos em PHP, o arquivo ficará gigante, com várias linhas e trecho que fazem coisas diferentes. Por este motivo, vai chegar um momento em que não vamos mais entender o que fizemos naquele código, como corrigimos determinado problema, ou porque existe uma linha a mais para fazer determinada tarefa.

Para resolver este problema, precisamos documentar o que estamos fazendo, simplesmente escrever o que determinada linha ou função faz para que possamos lembrar depois.

Em PHP, utilizamos os comentários para documentar nossos códigos, isso garante que sempre que alguém ler aquele código, saberá exatamente como manipulá-lo, até mesmo você, quando esquecer porque escreveu aquela função estranha (e vai por mim, a gente esquece mesmo).

Existem várias maneiras de comentar em PHP, mas vejamos apenas duas: utilizando duas barra (//) ou os caracteres /* e */.

Os comentários com duas barras (//) servem apenas para uma linha:

<?php
// Isso é um comentário
echo 'Isso é código';

// Isso é outro comentário
echo 'Isso é código';
?>

O interpretador do PHP ignora os comentários, assim, eles não atrapalham seu código, não geram erros e não aparecem na saída final.

Os comentários com os sinais de /* e */, equivalem para comentários com quantas linhas você desejar, porém, você sempre deve fechar os comentários com */. Veja um exemplo:

<?php
/* Isso é um comentário 
e eu posso utilizar quantas
linhas eu precisar,
contando que feche os comentários 
com --> */
echo 'Isso é código';
?>

Considerações finais sobre echo em PHP

Como eu descrevi ao longo do artigo, o comando echo é um dos comandos mais utilizados em PHP, e você pode exibir praticamente tudo o que quiser.

Basicamente, você vai utilizar este comando para exibir variáveis, que são uma forma para guardar valores em PHP, veja um exemplo:

<?php
// Meu nome
$meu_nome = 'Luiz Otávio';

// Frase com concatenação do meu nome
$frase = 'Meu nome é ' . $meu_nome;

// Exibe a frase
echo $frase;
?>

Ainda vamos ver variáveis em muito mais detalhes, porém, saiba que elas são uma forma de salvar um valor qualquer em um trecho de texto bem menor. Em PHP utilizamos o sinal de $ (cifrão) para criar uma variável (conforme o código acima mostra). Caso queira concatenar (juntar duas variáveis), basta utilizar um ponto (.).

Não entre em pânico sobre variáveis ainda, vamos falar sobre isso na próxima aula. Por agora, brinque com os trechos de código que deixei no artigo para pegar intimidade com a linguagem.

Na próxima aula aprofundaremos muito mais.

Vídeo tutorial

O vídeo tutorial abaixo é um complemento ao texto acima:

Link do vídeo: https://www.youtube.com/watch?v=jCUlliIPjvg

Aula anterior

Caso queira acessar a aula anterior, segue o link:

Concluindo

Em caso de dúvidas, críticas ou qualquer outra coisa que queira falar, basta deixar um comentário aí abaixo. Estamos ansiosos para ouvir a sua opinião.

Veja todas as aulas, e mais, na categoria Curso de PHP do Tutsup.

Em nossa última aula, falamos sobre as funções printf e sprintf, que são funções que servem para exibir ou criar uma string formatada. Hoje falaremos sobre vprintf e vsprintf, que fazem o mesmo, porém em arrays.

Para continuar seguindo este tutorial, é necessário que você entenda algumas partes do PHP, são elas:

Se você perdeu, ou ainda não tem muita experiência sobre os assuntos acima, faça-o o mais rápido possível.

Então vamos lá.

Utilizando vprintf e vsprintf em PHP

Na verdade não existe segredo nenhum em utilizar ambas as funções, você simplesmente precisa criar um formato, que pode conter um texto qualquer, e, onde quiser que apareçam os valores do array (na ordem), colocar as diretivas.

As diretivas começam com um sinal de porcentagem (%) e uma letra. Existem mais opções, das quais todas foram descritas no artigo printf e sprintf em PHP.

Veja um exemplo de utilização de vprintf:

<?php
// Array a ser formatado
$array = array(
	10,
	'gatos',
	'cama'
);

// Retorna: Existem 10 gatos sobre a cama.
vprintf('Existem %d %s sobre a %s.', $array);
?>

Perceba acima que as diretivas (%d, %s e %s) são substituídas na ordem do seu índice no array (0, 1 e 2), formando a seguinte frase:

Existem 10 gatos sobre a cama.

O mesmo pode ser atingido com vsprintf, mas a diferença aqui é que teremos que salvar o valor em uma variável, e depois exibi-la.

<?php
// Array a ser formatado
$array = array(
	10,
	'gatos',
	'cama'
);

// Salva o valor em uma variável
$frase = vsprintf('Existem %d %s sobre a %s.', $array);

// Retorna: Existem 10 gatos sobre a cama.
echo $frase;
?>

Viu como é simples?

Em caso de dúvidas, basta perguntar.

printf e sprintf em PHP fazem praticamente a mesma coisa, criam uma string formatada dependendo de diretivas que são formadas por texto normal (sem o sinal de %).

Veja sua descrição no manual do PHP:

string sprintf ( string $formato [, mixed $args [, mixed $... ]] )

printf e sprintf em PHP

Ambas, sprintf e printf têm a mesma descrição e aceitam os mesmos argumentos, a única diferença entre ambas é que a função printf exibe valores na tela, sprintf salva o valor em uma variável.

Formato

O primeiro parâmetro aceito por sprintf e printf é o $formato, que é o valor que vai conter o texto e as diretivas. Por exemplo:

<?php
// Uma string
printf('%s', 'Uma string');
?>

No trecho acima, tenho apenas uma diretiva, o %s, que é tratado e mostrado como uma string.

Veja as possibilidades de diretivas:

  • %b – O argumento é tratado com inteiro e mostrado como binário;
  • %c – O argumento é tratado como inteiro e mostrado como o caractere ASCII correspondente;
  • %d – O argumento é tratado inteiro e mostrado como número decimal com sinal de positivo ou negativo.
  • %e – O argumento é tratado como notação científica (Ex.: 1.2e+2). O especificador de precisão indica o número de dígitos depois do ponto decimal (desde o PHP 5.2.1).
  • %u – O argumento é tratado com inteiro e mostrado como número decimal sem sinal.
  • %f – O argumento é tratado como float e mostrado como número de ponto flutuante (do locale).
  • %F – O argumento é tratado como float e mostrado como número de ponto flutuante (não usando o locale).
  • %o – O argumento é tratado com inteiro e mostrado como um número octal.
  • %s – O argumento é tratado e mostrado como uma string.
  • %x – O argumento é tratado como inteiro e mostrado como número hexadecimal (com as letras minúsculas).
  • %X – O argumento é tratado como inteiro e mostrado como número hexadecimal (com as letras maiúsculas).

Veja outro exemplo de uso de printf:

<?php
// Agora
$hora = array(
	9,
	14,
	'AM'
);

// Uma string
$estou = 'escrevendo';

// Formata: São 9:14AM e estou escrevendo.
printf('São %d:%d%s e estou %s.', $hora[0], $hora[1], $hora[2], $estou);
?>

Ou vários exemplos:

<?php
$numero = 65;

printf('%b <br>', $numero); // 1000001
printf('%c <br>', $numero); // A
printf('%d <br>', $numero); // 65
printf('%e <br>', $numero); // 6.500000e+1
printf('%u <br>', $numero); // 65
printf('%f <br>', $numero); // 65.000000
printf('%F <br>', $numero); // 65.000000
printf('%o <br>', $numero); // 101
printf('%s <br>', $numero); // 65
printf('%x <br>', $numero); // 41
printf('%X <br>', $numero); // 41 
?>

Note que o <br>  serve apenas para quebra de linha em HTML.

Formatos mais avançados

Você também pode indicar que a função adicione espaços para a direita ou para a esquerda no valor. Veja exemplos:

<?php
// Um número
$numero = 65;

// Apenas uma tag HTML
echo '<pre>';

// Adiciona 11 espaços para a direita
printf("'%-11d'", $numero);  // '65         '

// Adiciona 11 espaços para a esquerda
printf("'%11d'", $numero);   // '         65'

// Adiciona 11 espaços para a esquerda
// e conta apenas um caractere para a string (s)
printf("'%11.1s'", $numero); // '          6'

// Apenas o fechamento da tag HTML
echo '</pre>';
?>

Perceba que o sinal de – (menos) indica que os espaços serão adicionados para a direita, se você não especificar este sinal, os espaços serão adicionados para a esquerda. Veja também que você pode adicionar um ponto (.) e indicar a quantidade de caracteres a serem apresentados.

Mais exemplos

Veja mais exemplos:

<?php
// Formata data: 20/04/1987
printf('%02d/%02d/%04d', 20, 04, 1987);

// Formata dinheiro: 50.59
printf("%01.2f", 000050.59);
?>

Diferença entre printf e sprintf em PHP

A única diferente de printf e sprintf é que sprintf não vai exibir os valores, e sim salva-los em uma variável. Veja:

<?php
// Crio uma variável com sprintf
$variavel = sprintf('Tenho %d anos.', 27);

// Só agora vou exibir seu valor
echo $variavel; // Tenho 27 anos.
?>

 Mais detalhes sobre printf e sprintf

Para maiores informações sobre printf e sprintf acesse:

Em caso de dúvidas, basta comentar.