Menu

PHP echo: imprimir texto, variables y HTML

echo imprime una o varias cadenas: echo "Hello, $name"; o echo $a, $b;. Es la forma habitual de enviar texto o HTML a la página. print hace lo mismo con un solo valor y devuelve 1; <?= $x ?> es la forma corta dentro de HTML.

Esta página incluye editores ejecutables: edita, ejecuta y ve el resultado al instante.

echo imprime texto. Escribe echo "Hello"; para mostrar una cadena, echo "Hello, $name"; para incluir una variable y echo $a, $b; para imprimir varios valores seguidos. Lo que imprime echo se convierte en la página que muestra el navegador, o en el texto que ves en una terminal.

La primera línea usa interpolación (la variable está dentro de comillas dobles), la segunda une cadenas con el operador . y la tercera pasa tres valores separados por comas. Las tres imprimen el mismo tipo de resultado.

Imprimir HTML con echo

En una página web, echo suele imprimir HTML. El navegador recibe el texto y renderiza las etiquetas. Pulsa Ejecutar y la pestaña Página muestra el resultado renderizado:

La última línea usa comillas simples para que las comillas dobles de class="note" no necesiten escaparse. Dentro de comillas simples las variables no se sustituyen, así que úsalas para texto fijo. Si un valor viene de un visitante (un formulario, la URL), imprímelo a través de htmlspecialchars para que no pueda inyectar HTML; consulta la página de htmlspecialchars.

La etiqueta corta de echo <?=

Dentro de un archivo HTML, <?= $value ?> es la forma corta de <?php echo $value; ?>. Mantiene legibles las plantillas:

La etiqueta corta de echo está siempre disponible. La otra etiqueta corta, <? sin php, depende de una configuración y no debería usarse.

Imprimir varios valores y saltos de línea

echo no añade un salto de línea. En una terminal, añade "\n" (entre comillas dobles) o la constante PHP_EOL. En HTML, un salto de línea en el código fuente no tiene efecto visible; usa <br> o elementos separados.

Las comas y los puntos dan la misma salida. Con comas, echo imprime cada valor por turno; con puntos, PHP primero construye una sola cadena y luego la imprime. Los saltos de línea tienen su propia página: salto de línea en PHP.

echo vs print

print es el hermano mayor. Imprime un valor y siempre devuelve 1, lo que le permite aparecer dentro de una expresión. echo acepta cualquier número de valores y no devuelve nada.

echoprint
Valoresuno o más, separados por comasexactamente uno
Devuelvenada (es una sentencia)1
Uso en una expresiónnosí, $ok = print "x";
Uso habitualcasi todorara vez

printf es otra cosa: formatea valores con marcadores, como printf("%05.2f", 3.14159), y se explica en la página de sprintf.

Imprimir un array o un objeto con echo

echo solo imprime cadenas y valores que se convierten en cadena (números, booleanos, null). Un array no se convierte. Tu propio PHP imprime un aviso y la palabra Array:

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

Para mostrar el contenido, elige la función adecuada:

Un objeto es más estricto: salvo que su clase defina __toString(), echo $object; detiene el script con Error: Object of class User could not be converted to string. Los booleanos también suelen sorprender: echo true; imprime 1 y echo false; no imprime nada. Usa var_dump($value) cuando necesites ver el tipo y el valor exactos.

Error frecuente: echo con paréntesis y comas

Como echo parece una función, hay quien escribe echo("a", "b");. Eso es un error de sintaxis, porque los paréntesis envuelven una sola expresión:

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

Quita los paréntesis (echo "a", "b";) o une los valores (echo("a" . "b");). Lo mismo vale para print, que nunca acepta un segundo valor, con o sin paréntesis.

Preguntas frecuentes

¿Cuál es la diferencia entre echo y print en PHP?

Ambos imprimen cadenas. echo acepta varios valores separados por comas (echo $a, $b;) y no devuelve nada; print recibe exactamente un valor y devuelve 1, así que puede usarse dentro de una expresión. En la práctica, echo se usa casi en todas partes.

¿Necesito paréntesis con echo?

No. echo es una construcción del lenguaje, no una función, así que echo "Hi"; es la forma normal. echo("Hi"); funciona porque los paréntesis solo agrupan una expresión, pero echo("a", "b"); es un error de sintaxis.

¿Por qué echo false no imprime nada?

echo convierte su valor en cadena, y false se convierte en la cadena vacía "" mientras que true se convierte en "1". Para ver el booleano en sí, usa var_dump($x); (imprime bool(false)) o echo var_export($x, true); (imprime false).

¿Qué significa <?= en PHP?

<?= $value ?> es la etiqueta corta de echo, idéntica a <?php echo $value; ?>. Está siempre habilitada desde PHP 5.4 y es la forma habitual de imprimir valores dentro de plantillas HTML.

Ilustración de los lenguajes de programación de Coddy

Aprende a programar con Coddy

COMENZAR