Un archivo .php puede tener HTML normal y bloques de PHP intercalados. PHP
ejecuta lo que está dentro de los bloques y deja pasar todo lo demás sin tocarlo.
Esta página enseña a abrir y cerrar esos bloques y a imprimir con echo.
Las etiquetas de PHP
Anatomía de un bloque PHP
<?php echo "Hola"; ?>
^ ^ ^ ^ ^
| | | | `-- cierre del bloque
| | | `-- punto y coma: termina la instrucción
| | `-- el valor que se imprime (un texto)
| `-- la instrucción
`-- apertura del bloque
Todo lo que está entre <?php y ?> es código. Lo que está fuera de esas
etiquetas se envía tal cual al navegador.
<h1>Mi sitio</h1><p><?php echo "Este párrafo lo escribió PHP"; ?></p><p>Este otro es HTML normal.</p>
Lo que recibe el navegador:
<h1>Mi sitio</h1><p>Este párrafo lo escribió PHP</p><p>Este otro es HTML normal.</p>
PHP lee de arriba hacia abajo, como el navegador
No hay función main como en C. PHP empieza en la primera línea del archivo y
termina en la última: el HTML de afuera y los echo de adentro van saliendo en
el mismo orden en que están escritos.
echo: imprimir
echo escribe un texto en la salida. En la terminal aparece en pantalla; en el
navegador pasa a ser parte del HTML.
Si cierras con ?> y después queda un espacio o una línea en blanco, ese
espacio se envía al navegador en cada página que incluya el archivo, aunque no
lo hayas escrito en ninguna vista. Sin ?>, el problema no existe.
Pruébalo
Crea fecha.php con un <h1> en HTML y un párrafo que imprima la fecha con <?= date("d/m/Y") ?>
Ábrelo con php -S y mira el código fuente: la fecha aparece escrita, sin PHP
Ejecuta el mismo archivo con php fecha.php: verás el HTML como texto en la terminal
Error provocado: borra un ; y lee el número de línea del error
Error provocado: pon un echo dentro de <!-- --> y búscalo en el código fuente
Errores comunes
Síntoma
Causa
Solución
syntax error, unexpected token "echo"
Falta el ; de la instrucción anterior
Revisa el final de la línea de arriba
syntax error, unexpected end of file
Quedó una comilla o una llave sin cerrar
Busca la comilla de apertura que no tiene pareja
Se ve <?php en pantalla
La etiqueta está mal escrita (<? php, <php) o el archivo no pasó por PHP
Escribe <?php junto, sin espacios, y abre con php -S
El texto sale todo en una línea en el navegador
Usaste \n, que el navegador lee como espacio
En el navegador los saltos se hacen con etiquetas: <p>, <br>
Checkpoint
Intenta responder antes de desplegar cada pregunta.
¿Qué diferencia hay entre <?php echo $x; ?> y <?= $x ?>?
Ninguna en el resultado: las dos imprimen $x. La corta es para imprimir un
valor dentro del HTML; la larga, para escribir instrucciones.
El error dice línea 8, pero la línea 8 está bien escrita. ¿Dónde buscas?
En la línea 7 (y antes). Cuando falta un ;, una comilla o una llave, PHP lo nota
recién al leer lo que viene después.
Escribiste echo "Hola\nChao"; y en el navegador sale "Hola Chao". ¿Por qué?
Porque \n es un salto de línea en el texto, y el navegador interpreta HTML:
los saltos de línea se muestran como un espacio. En el navegador se usa <br> o
etiquetas de bloque como <p>.
¿Por qué datos.php no debe terminar en ?>?
Porque cualquier espacio o línea en blanco después del ?> se envía al navegador
como salida. Si el archivo es solo PHP, se deja abierto y ese riesgo desaparece.