Menu

PHP echo : afficher du texte, des variables et du HTML

echo affiche une ou plusieurs chaînes : echo "Hello, $name"; ou echo $a, $b;. C'est la façon habituelle d'envoyer du texte ou du HTML à la page. print fait la même chose avec une seule valeur et renvoie 1 ; <?= $x ?> est la forme courte dans du HTML.

Cette page contient des éditeurs exécutables - modifiez, exécutez et voyez la sortie instantanément.

echo affiche du texte. Écrivez echo "Hello"; pour afficher une chaîne, echo "Hello, $name"; pour y inclure une variable, et echo $a, $b; pour afficher plusieurs valeurs à la suite. Ce qu'affiche echo devient la page que montre le navigateur, ou le texte que vous voyez dans un terminal.

La première ligne utilise l'interpolation (la variable se trouve entre guillemets doubles), la deuxième assemble des chaînes avec l'opérateur ., et la troisième passe trois valeurs séparées par des virgules. Les trois affichent le même genre de résultat.

Afficher du HTML avec echo

Dans une page web, echo affiche généralement du HTML. Le navigateur reçoit le texte et interprète les balises. Cliquez sur Run et l'onglet Page montre le rendu :

La dernière ligne utilise des guillemets simples, ce qui évite d'échapper les guillemets doubles de class="note". Entre guillemets simples, les variables ne sont pas remplacées : réservez-les au texte fixe. Si une valeur vient d'un visiteur (un formulaire, l'URL), affichez-la via htmlspecialchars pour qu'elle ne puisse pas injecter de HTML ; voir la page htmlspecialchars.

La balise echo courte <?=

Dans un fichier HTML, <?= $value ?> est la forme courte de <?php echo $value; ?>. Elle garde les templates lisibles :

La balise echo courte est toujours disponible. L'autre balise courte, <? sans php, dépend d'un réglage et ne doit pas être utilisée.

Afficher plusieurs valeurs et des retours à la ligne

echo n'ajoute pas de saut de ligne. Dans un terminal, ajoutez "\n" (entre guillemets doubles) ou la constante PHP_EOL. En HTML, un saut de ligne dans le code source ne produit rien de visible ; utilisez <br> ou des éléments séparés.

Les virgules et les points donnent le même affichage. Avec des virgules, echo affiche chaque valeur à tour de rôle ; avec des points, PHP construit d'abord une seule chaîne puis l'affiche. Les sauts de ligne ont leur propre page : retour à la ligne en PHP.

echo ou print

print est le grand frère plus ancien. Il affiche une seule valeur et renvoie toujours 1, ce qui lui permet d'apparaître dans une expression. echo accepte autant de valeurs que vous voulez et ne renvoie rien.

echoprint
Valeursune ou plusieurs, séparées par des virgulesexactement une
Renvoierien (c'est une instruction)1
Utilisable dans une expressionnonoui, $ok = print "x";
Usage courantpresque toutrarement

printf est encore différent : il formate des valeurs avec des marqueurs, comme printf("%05.2f", 3.14159), et il est expliqué sur la page sprintf.

Afficher un tableau ou un objet avec echo

echo n'affiche que des chaînes et des valeurs convertibles en chaînes (nombres, booléens, null). Un tableau ne se convertit pas. Votre PHP affiche un avertissement et le mot Array :

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

Pour afficher le contenu, choisissez la fonction adaptée :

Un objet est plus strict : à moins que sa classe ne définisse __toString(), echo $object; arrête le script avec Error: Object of class User could not be converted to string. Les booléens surprennent aussi souvent : echo true; affiche 1 et echo false; n'affiche rien du tout. Utilisez var_dump($value) quand vous avez besoin de voir le type et la valeur exacts.

Erreur fréquente : echo avec des parenthèses et des virgules

Comme echo ressemble à une fonction, on écrit parfois echo("a", "b");. C'est une erreur de syntaxe, car les parenthèses entourent une seule expression :

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

Retirez les parenthèses (echo "a", "b";) ou assemblez les valeurs (echo("a" . "b");). C'est pareil pour print, qui n'accepte jamais de seconde valeur, avec ou sans parenthèses.

Questions fréquentes

Quelle est la différence entre echo et print en PHP ?

Les deux affichent des chaînes. echo accepte plusieurs valeurs séparées par des virgules (echo $a, $b;) et ne renvoie rien ; print prend exactement une valeur et renvoie 1, il peut donc être utilisé dans une expression. En pratique, on utilise echo presque partout.

Faut-il des parenthèses avec echo ?

Non. echo est une construction du langage, pas une fonction, donc echo "Hi"; est la forme normale. echo("Hi"); fonctionne car les parenthèses ne font que regrouper une expression, mais echo("a", "b"); est une erreur de syntaxe.

Pourquoi echo false n'affiche rien ?

echo convertit sa valeur en chaîne : false devient la chaîne vide "" et true devient "1". Pour voir le booléen lui-même, utilisez var_dump($x); (affiche bool(false)) ou echo var_export($x, true); (affiche false).

Que signifie <?= en PHP ?

<?= $value ?> est la balise echo courte, identique à <?php echo $value; ?>. Elle est toujours activée depuis PHP 5.4 et c'est la façon habituelle d'afficher des valeurs dans des templates HTML.

Illustration des langages de programmation de Coddy

Apprendre à coder avec Coddy

COMMENCER