echo
La parola chiave "echo" in PHP serve a inviare stringhe in output. Questo articolo ne esplora la sintassi e l'utilizzo con esempi pratici.
L'istruzione PHP echo
echo è il modo più comune per inviare output da uno script PHP al browser (o alla console). È un costrutto del linguaggio, non una vera funzione, motivo per cui lo si vede spesso usato senza parentesi. Questa pagina ne illustra la sintassi, le differenze rispetto a print, il tag abbreviato <?= ?> e gli errori tipici che spiazzano i principianti.
Se sei alle prime armi con l'output dei dati in PHP, può essere utile leggere anche PHP echo e print per un confronto affiancato e variabili PHP per capire i valori che stamperai.
Sintassi
echo expression1, expression2, ...;- Gli argomenti sono separati da virgole.
- Poiché
echoè un costrutto del linguaggio, le parentesi sono facoltative.echo "Hi";eecho("Hi");funzionano entrambi — ma nota cheecho("a", "b");è un errore di sintassi, poiché le parentesi possono racchiudere un solo argomento.
Output di base
<?php
echo "Hello World!"; // Hello World!
echo "\n"; // newline
echo "Hello", " ", "World!"; // Hello World!Passare più argomenti separati da virgole è marginalmente più veloce rispetto alla costruzione di una singola string con l'operatore di concatenazione (.), perché PHP non deve prima creare la string unita.
Echoing delle variabili
<?php
$name = "John";
$age = 30;
// Concatenation with the . operator
echo "My name is " . $name . " and I am " . $age . " years old.";All'interno di string con virgolette doppie PHP interpola anche le variabili direttamente, il che è spesso più leggibile della concatenazione:
<?php
$name = "John";
echo "Hello, $name!"; // Hello, John!
echo "Hello, {$name}san!"; // Hello, Johnsan! (braces clarify the variable name)Le string con virgolette singole non interpolano — echo 'Hello, $name'; stampa il letterale Hello, $name. Vedi PHP strings per le regole complete.
Il tag echo abbreviato <?= ?>
Quando si mescola PHP con HTML, <?= ?> è l'abbreviazione di <?php echo ?>. È abilitato per impostazione predefinita in PHP ed è il modo idiomatico per stampare un singolo valore all'interno di un template:
<p>Welcome, <?= $username ?>!</p>
<!-- equivalent to: -->
<p>Welcome, <?php echo $username; ?>!</p>echo vs print
Entrambi producono output, ma esistono delle differenze:
| Caratteristica | echo | print |
|---|---|---|
| Argomenti multipli | Sì (separati da virgole) | No (uno solo) |
| Valore restituito | Nessuno | Restituisce sempre 1 |
| Utilizzabile nelle espressioni | No | Sì (es. $ok = print "Hi";) |
| Velocità | Marginalmente più veloce | Marginalmente più lento |
Poiché print restituisce 1, può comparire all'interno di un'espressione; echo non può. Vedi L'istruzione PHP print per i dettagli.
Errori comuni
- Non viene restituito alcun valore.
$x = echo "Hi";è un errore fatale —echonon può essere assegnato né usato nelle espressioni. - Le parentesi con le virgole causano errori.
echo("a", "b");non è valido; elimina le parentesi:echo "a", "b";. - Escape dell'input utente. Fare l'echo di dati non affidabili direttamente nell'HTML espone a XSS. Passali prima attraverso
htmlspecialchars():echo htmlspecialchars($comment);. PHP_EOLvs"\n". Usa la costantePHP_EOLquando hai bisogno del corretto terminatore di riga per il sistema operativo corrente (ad esempio, quando si scrive sulla console anziché in un browser).