Menu

PHP echo: imprimir texto, variáveis e HTML

echo imprime uma ou mais strings: echo "Hello, $name"; ou echo $a, $b;. É o jeito comum de enviar texto ou HTML para a página. print faz o mesmo com um valor e retorna 1; <?= $x ?> é a forma curta dentro do HTML.

Esta página tem editores executáveis - edite, execute e veja a saída na hora.

echo imprime texto. Escreva echo "Hello"; para mostrar uma string, echo "Hello, $name"; para incluir uma variável, e echo $a, $b; para imprimir vários valores em sequência. Tudo o que o echo imprime vira a página que o navegador mostra, ou o texto que você vê num terminal.

A primeira linha usa interpolação (a variável fica dentro das aspas duplas), a segunda junta strings com o operador ., e a terceira passa três valores separados por vírgulas. As três imprimem o mesmo tipo de resultado.

Imprimir HTML com echo

Numa página web, o echo normalmente imprime HTML. O navegador recebe o texto e renderiza as tags. Clique em Run e a aba Page mostra o resultado renderizado:

A última linha usa aspas simples para que as aspas duplas de class="note" não precisem de escape. Dentro de aspas simples as variáveis não são substituídas, então use-as para texto fixo. Se um valor vem de um visitante (um formulário, a URL), imprima-o com htmlspecialchars para que ele não consiga injetar HTML; veja a página sobre htmlspecialchars.

A tag curta de echo <?=

Dentro de um arquivo HTML, <?= $value ?> é a forma curta de <?php echo $value; ?>. Ela deixa os templates legíveis:

A tag curta de echo está sempre disponível. A outra tag curta, <? sem php, depende de uma configuração e não deve ser usada.

Imprimir vários valores e quebras de linha

O echo não adiciona quebra de linha. Num terminal, adicione "\n" (entre aspas duplas) ou a constante PHP_EOL. Em HTML, uma quebra de linha no código-fonte não aparece; use <br> ou elementos separados.

Vírgulas e pontos dão a mesma saída. Com vírgulas, o echo imprime cada valor por vez; com pontos, o PHP primeiro monta uma única string e depois a imprime. Quebras de linha têm uma página própria: quebra de linha no PHP.

echo ou print

print é o irmão mais velho. Ele imprime um valor e sempre retorna 1, o que permite usá-lo dentro de uma expressão. echo recebe qualquer quantidade de valores e não retorna nada.

echoprint
Valoresum ou mais, separados por vírgulaexatamente um
Retornonada (é uma instrução)1
Uso numa expressãonãosim, $ok = print "x";
Uso comumquase tudoraramente

printf é outra coisa: ele formata valores com marcadores, como printf("%05.2f", 3.14159), e é explicado na página sobre sprintf.

Imprimir um array ou um objeto

O echo só imprime strings e valores que viram string (números, booleanos, null). Um array não vira. No seu PHP, aparece um aviso e a palavra Array:

PHP Warning:  Array to string conversion in /home/index.php on line 3
Array

Para mostrar o conteúdo, escolha a função certa para o caso:

Um objeto é mais rígido: a menos que a classe defina __toString(), echo $object; interrompe o script com Error: Object of class User could not be converted to string. Booleanos também costumam surpreender: echo true; imprime 1 e echo false; não imprime nada. Use var_dump($value) quando precisar ver o tipo e o valor exatos.

Erro comum: echo com parênteses e vírgulas

Como o echo parece uma função, muita gente escreve echo("a", "b");. Isso é um erro de sintaxe, já que os parênteses envolvem uma única expressão:

PHP Parse error:  syntax error, unexpected token "," in /home/index.php on line 2

Tire os parênteses (echo "a", "b";) ou junte os valores (echo("a" . "b");). O mesmo vale para o print, que nunca aceita um segundo valor, com ou sem parênteses.

Perguntas frequentes

Qual a diferença entre echo e print no PHP?

Os dois imprimem strings. echo aceita vários valores separados por vírgula (echo $a, $b;) e não retorna nada; print recebe exatamente um valor e retorna 1, então pode ser usado dentro de uma expressão. Na prática, echo é usado em quase todo lugar.

Preciso de parênteses com echo?

Não. echo é uma construção da linguagem, não uma função, então echo "Hi"; é a forma normal. echo("Hi"); funciona porque os parênteses só agrupam uma expressão, mas echo("a", "b"); é um erro de sintaxe.

Por que echo false não imprime nada?

echo converte o valor em string, e false vira a string vazia "" enquanto true vira "1". Para ver o booleano em si, use var_dump($x); (imprime bool(false)) ou echo var_export($x, true); (imprime false).

O que significa <?= no PHP?

<?= $value ?> é a tag curta de echo, idêntica a <?php echo $value; ?>. Ela está sempre habilitada desde o PHP 5.4 e é o jeito comum de imprimir valores dentro de templates HTML.

Ilustração das linguagens de programação do Coddy

Aprenda a programar com o Coddy

COMEÇAR