SunshinePHP 2016

Tag-uri PHP

Când PHP parsează un fișier, se uită după tag-urile de deschidere și închidere, acestea sunt <?php și ?>, care indică când PHP începe și termină interpretarea codului dintre ele. Parsarea în această manieră permite PHP să fie încorporat în tot felul de documente, pentru că orice este în afara perechii de tag-uri de deschidere și închidere este ignorat de către parsatorul PHP.

De asemenea, PHP permite tag scurt de deschidere <? (nu se încurajează folosirea lui deoarece este valabil numai activând directiva short_open_tag din fișierul de configurare php.ini, sau dacă PHP a fost configurat cu opțiunea --enable-short-tags ).

Dacă un fișier conține numai cod PHP, este de preferat omiterea tag-ului de închidere PHP de la sfârșitul paginii. Aceasta previne spațiu gol accidental sau noi rânduri adăugate după tag-ul de închidere PHP, ceea ce ar cauza efecte nedorite deaorece PHP va începe buferizarea ieșirii când nu este nici o intenție din partea programatorului să trimită vre-o ieșire la acel punct din script.

echo "Hello world";

// ... more code

echo "Ultima declarație";

// script-ul se termină aici fără tag de închidere

Istoricul schimbărilor
Versiune Descriere
7.0.0 Tag-urile ASP <%, %>, <%= și tag-ul de stil script <script language="php"> sunt excluse din PHP.
5.4.0 Tag-ul <?= este mereu disponibil indiferent de setarea ini short_open_tag.

add a note add a note

User Contributed Notes 6 notes

purkrt at gmail dot com
6 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 "

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.
codehunter at gmx dot net
2 months 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.
10 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.

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.
alexander dot podgorny at somewhere dot com
11 months ago
One reason to use long tags over short is to avoid confusion with <?xml ?> notation.
billscloud dot mail at gmail dot com
11 months ago
In your paragraph you need to close your bracket.

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