Menu

PHP echo: stampare testo, variabili e HTML

echo stampa una o più stringhe: echo "Hello, $name"; oppure echo $a, $b;. È il modo abituale per inviare testo o HTML alla pagina. print fa lo stesso con un solo valore e restituisce 1; <?= $x ?> è la forma breve dentro l'HTML.

Questa pagina include editor eseguibili: modifica, esegui e vedi subito l'output.

echo stampa testo. Scrivi echo "Hello"; per stampare una stringa, echo "Hello, $name"; per includere una variabile, e echo $a, $b; per stampare più valori di fila. Ciò che echo stampa diventa la pagina mostrata dal browser, oppure il testo che vedi in un terminale.

La prima riga usa l'interpolazione (la variabile sta dentro le virgolette doppie), la seconda unisce le stringhe con l'operatore ., e la terza passa tre valori separati da virgole. Tutte e tre stampano lo stesso tipo di risultato.

Stampare HTML con echo

In una pagina web, echo di solito stampa HTML. Il browser riceve il testo e visualizza i tag. Premi Run e la scheda Page mostra il risultato visualizzato:

L'ultima riga usa le virgolette singole, così le virgolette doppie di class="note" non vanno escapate. Dentro le virgolette singole le variabili non vengono sostituite, quindi usale per il testo fisso. Se un valore arriva da un visitatore (un form, l'URL), stampalo passando da htmlspecialchars così non può iniettare HTML; vedi la pagina su htmlspecialchars.

Il tag breve di echo <?=

Dentro un file HTML, <?= $value ?> è la forma breve di <?php echo $value; ?>. Mantiene leggibili i template:

Il tag breve di echo è sempre disponibile. L'altro tag breve, <? senza php, dipende da un'impostazione e non andrebbe usato.

Stampare più valori e andare a capo

echo non aggiunge un'interruzione di riga. In un terminale, aggiungi "\n" (tra virgolette doppie) oppure la costante PHP_EOL. In HTML, un a capo nel sorgente non produce nulla di visibile; usa <br> o elementi separati.

Virgole e punti danno lo stesso output. Con le virgole, echo stampa ogni valore a turno; con i punti, PHP prima costruisce una stringa unica e poi la stampa. Gli a capo hanno una pagina tutta loro: a capo in PHP.

echo vs print

print è il fratello più vecchio. Stampa un valore e restituisce sempre 1, il che gli permette di comparire dentro un'espressione. echo accetta un numero qualsiasi di valori e non restituisce nulla.

echoprint
Valoriuno o più, separati da virgoleesattamente uno
Restituiscenulla (è un'istruzione)1
Uso in un'espressionenosì, $ok = print "x";
Uso tipicoquasi tuttoraramente

printf è ancora diverso: formatta i valori con dei segnaposto, come printf("%05.2f", 3.14159), ed è trattato nella pagina su sprintf.

Stampare un array o un oggetto

echo stampa solo stringhe e valori che si convertono in stringa (numeri, booleani, null). Un array non si converte. Il tuo PHP stampa un warning e la parola Array:

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

Per mostrarne il contenuto, scegli la funzione adatta:

Un oggetto è più severo: a meno che la sua classe non definisca __toString(), echo $object; ferma lo script con Error: Object of class User could not be converted to string. Anche i booleani sono una sorpresa frequente: echo true; stampa 1 e echo false; non stampa proprio nulla. Usa var_dump($value) quando ti serve vedere il tipo e il valore esatti.

Errore comune: echo con parentesi e virgole

Siccome echo sembra una funzione, si finisce per scrivere echo("a", "b");. È un errore di sintassi, perché le parentesi racchiudono una sola espressione:

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

Togli le parentesi (echo "a", "b";) oppure unisci i valori (echo("a" . "b");). Lo stesso vale per print, che non accetta mai un secondo valore, con o senza parentesi.

Domande frequenti

Qual è la differenza tra echo e print in PHP?

Entrambi stampano stringhe. echo accetta più valori separati da virgole (echo $a, $b;) e non restituisce nulla; print prende esattamente un valore e restituisce 1, quindi si può usare dentro un'espressione. In pratica si usa echo quasi ovunque.

Servono le parentesi con echo?

No. echo è un costrutto del linguaggio, non una funzione, quindi echo "Hi"; è la forma normale. echo("Hi"); funziona perché le parentesi raggruppano solo un'espressione, ma echo("a", "b"); è un errore di sintassi.

Perché echo false non stampa nulla?

echo converte il valore in stringa, e false diventa la stringa vuota "" mentre true diventa "1". Per vedere il booleano in sé, usa var_dump($x); (stampa bool(false)) oppure echo var_export($x, true); (stampa false).

Cosa significa <?= in PHP?

<?= $value ?> è il tag breve di echo, identico a <?php echo $value; ?>. È sempre attivo da PHP 5.4 ed è il modo abituale per stampare valori dentro i template HTML.

Illustrazione dei linguaggi di programmazione di Coddy

Impara a programmare con Coddy

INIZIA