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 ).

Historiques
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 suivant la configuration de l'option INI short_open_tag.

Si un fichier est purement 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 ce qui est désiré.

<?php
echo "Bonjour le monde !";

// ... encore du code

echo "Dernière instruction";

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

add a note add a note

User Contributed Notes 6 notes

up
29
purkrt at gmail dot com
5 months ago
I would like to stress out that the opening tag is "<?php[whitespace]", not just "<?php". While this might seem blatantly obvious, I thought for some time that

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

would work, and it does not; the comment does not work as whitespace. I've run into this while converting some older code with short open tag.
up
-27
mario
9 months ago
A few related notes, partly covered elsewhere in the manual:

  → Since PHP 5.4 the inline echo <?= ?> short tags are always
    enabled regardless of the short_open_tag (php.ini) setting.

  → PHP tags are infrequently also referred to as open/close "tokens"
    (as per the tokenizers T_OPEN_TAG / _ECHO, and T_CLOSE_TAG naming).

  → The historic ASP-style <% %> and even more rarely used
    <script language=PHP></script> tags are to be repealed in PHP7.
    http://wiki.php.net/rfc/remove_alternative_php_tags

There also exists a small tool called "phptags tidier" for consistently rewriting PHP short/long tags.  It's suitable to normalize include and template scripts, e.g. employ the always-enabled long <?php ?> tags, and/or relieve whitespace padding before/after PHP tags:

    phptags --long --whitespace --warn  *.php

Instead of reliably fixing the common whitespace/BOM issues around tags, it can also just remove all ?> close tags with `--unclose --tokenizer` as advised afore.
up
-1
codehunter at gmx dot net
1 month ago
Hope that there will be implemented a INI-Option for a complete deactivation of necessity closing AND opening PHP-Tags for *pure* PHP scripts.
up
-48
alexander dot podgorny at somewhere dot com
10 months ago
One reason to use long tags over short is to avoid confusion with <?xml ?> notation.
up
-67
billscloud dot mail at gmail dot com
10 months ago
In your paragraph you need to close your bracket.

<grammernazi>Me</grammarnazi>
up
-107
preda dot vlad at yahoo dot com
2 years ago
So here are the valid ways to open PHP tags:

<?php ?> // standard tags
<? ?> // short tags, need short_open_tag enabled in php.ini
<% %> // asp tags, need asp_tags enabled in php.ini
<script language="php"> </script> // case insensitive

PSR-1 coding standards suggest to only use <?php ?> or <?= ?> (echo short tags) - and no other variations, and PSR-2 suggests to not close the tags in PHP only files.
To Top