PHP 7.4.0 alpha 1 Released

Balises PHP

Lorsque PHP traite un fichier, il cherche les balises d'ouverture et de fermeture (<?php et ?>) qui délimitent le code qu'il doit interpréter. De cette manière, cela permet à PHP d'être intégré dans toutes sortes de documents, car tout ce qui se trouve en dehors des balises ouvrantes / fermantes de PHP est ignoré.

PHP autorise aussi la balise ouvrante dite "courte" <? (que nous vous conseillons vivement de ne pas utiliser car elle n'est disponible que lors de l'activation de la directive de configuration short_open_tag du php.ini, ou si PHP a été configuré avec l'option --enable-short-tags ).

Si un fichier contient seulement du code PHP, il est préférable de ne pas placer la balise de fermeture à la fin du fichier. Ceci permet d'éviter d'oublier un espace ou une nouvelle ligne après la balise de fermeture de PHP, ce qui causerait des effets non voulus car PHP commencera à afficher la sortie, ce qui n'est souvent pas le cas désiré.

echo "Bonjour le monde !";

// ... encore du code

echo "Dernière instruction";

// le script se termine ici, sans la balise de fermeture PHP

Version Description
7.0.0 Les balises ASP <%, %>, <%=, et les balises script <script language="php"> ont été supprimées de PHP.
5.4.0 La balise <?= est toujours disponible indépendamment de la configuration de l'option INI short_open_tag.

add a note add a note

User Contributed Notes 4 notes

crazytonyi at gmail dot com
3 years ago
Regarding earlier note by @purkrt :

> I would like to stress out that the opening tag is "<?php[whitespace]", not just "<?php"

This is absolutely correct, but the wording may confuse some developers less familiar with the extent of the term "[whitespace]".

Whitespace, in this context, would be any character that generated vertical or horizontal space, including tabs ( \t ), newlines ( \n ), and carriage returns ( \r ), as well as a space character ( \s ). So reusing purkrt's example:

<?php/*blah*/ echo "a"?>

would not work, as mentioned, but :

<?php /*php followed by space*/ echo "a"?>

will work, as well as :

/*php followed by end-of-line*/ echo "a"?>

and :

<?php    /*php followed by tab*/ echo "a"?>

I just wanted to clarify this to prevent anyone from misreading purkrt's note to mean that a the opening tag --even when being on its own line--required a space ( \s ) character. The following would work but is not at all necessary or how the earlier comment should be interpreted :

/*php followed by a space and end-of-line*/ echo "a"?>

The end-of-line character is whitespace, so it is all that you would need.
kuzawinski dot marcin at gmail dot com
11 hours ago
New lines placed after PHP closing tags are ignored;

<?= "A"?>
<?= "C"?>

Mark Clements (
1 year ago
Closing PHP tags are recognised within single-line comments:

// Code will end here ?> This is output as literal text.

# Same with this method of commenting ?> This is output as literal text.

However they do not have an effect in C-style comments:

/* Code will not end here ?> as closing tags are ignored inside C-style comments. */
pl at dot pl
3 months ago
Omit closing tag ?> always whenever you can

<!DOCTYPE html><head>
<title><?php include'varia.php'; echo$title?></title>

= 'Welcome';
[new line]        //other words: an extra 'Enter' is guilty

and you get:

Welcome - at the browser label

source won't tell you what happened - there will be fine:

<!DOCTYPE html><head>

Now imagine, what else can go wrong because of it? Everything, as Murphy said.
And you will look for the answer why...? And where...?
It's just simplest example.
To Top