PHPKonf 2020 Online

PHP Tags

Wenn PHP eine Datei parst, schaut es nach öffnenden und schließenden Tags, also <?php und ?>, die PHP anweisen, das Interpretieren des zwischenliegenden Codes zu beginnen bzw. zu beenden. Auf diese Weise zu parsen ermöglicht die Einbettung von PHP in allen möglichen unterschiedlichen Dokumenten, da alles außerhalb eines Paares von öffnenden und schließenden Tags vom PHP Parser ignoriert wird.

PHP kennt den kurzen Ausgabe-Tag <?=, der eine Kurzform des ausführlicheren Ausgabe-Tags <?php echo "String"; ?> ist.

PHP erlaubt ebenfalls kurze öffnende Tags <? (von denen abgeraten wird, da sie nur verfügbar sind, wenn sie durch die short_open_tag php.ini Konfigurationsdirektive aktiviert wurden, oder PHP mit der --enable-short-tags Option konfiguriert wurde).

Enthält eine Datei nur PHP-Code, ist es besser, den schließenden PHP-Tag am Ende der Datei wegzulassen. Das verhindert, dass versehentlich Whitespace oder Zeilenumbrüche nach dem schließenden PHP-Tag hinzugefügt werden, die unerwünschte Auswirkungen haben können, da PHP das Puffern der Ausgabe beginnt, auch wenn der Programmierer keinerlei Absicht hatte, irgendwelche Ausgaben an dieser Stelle des Scripts zu senden.

<?php
echo "Hallo Welt";

// ... mehr Code

echo "Letzte Anweisung";

// das Script endet hier ohne schließenden PHP-Tag

Changelog
Version Beschreibung
7.0.0 Die ASP-Tags <%, %>, <%=, und der Script-Tag <script language="php"> wurden von PHP entfernt.
5.4.0 Der Tag <?= ist immer verfügbar, unabhängig von der short_open_tag ini Einstellung.

add a note add a note

User Contributed Notes 3 notes

up
1
anisgazig at gmail dot com
2 months ago
When php parse a file,it looks for opening and closing tag.php parser interpreting  the code between opening and closing tag and allows php to be embedded in all shorts of different documents.Outside of opening and closing tag is ignored by the php parser.

Now php recommended you to use only two tags.

1.Standard tag which is <?php echo "I'm Standard tag"; ?>
2.Short echo tag which is <?= "I'm Short echo tag"; ?>

Both are not affected by php ini configuration file directive.

Although php also allow short open tag which is discoursed but still available if php was configured with --enable-short-tags or  short_open_tag is enabled in php ini configuration file directive.

if you want to use php in combination with xml,you can disable short_open_tag in order to use <?xml ?> inline.
Otherwise, you can print it with PHP, for example: <?php echo '<?xml version="1.0"?>'; ?>

short_echo_tag also affected the short echo tag before 5.4.0
since 5.4.0,short echo tag is always available.

asp tag <% %> and <%= > are removed from php 7
script tag <script language="php"> <script/> also removed from php 7

It is preferable to omit the closing tag if a file only contain the php code.
<?php echo "a statement";
      echo
"another statement";

It prevent unwanted whitespace or new line being added after the closing tag.
--
happy-gazi|php-
up
-1
mojtaba
1 month ago
این توضیح فارسی است || this note is persian

برای شروع کد زدن پی اچ پی از تگ
<?php   ?>
استفاده میکنیم

تگ فوق استاندارد است

همچنین میتوانیم از
<? ?>
استفاده کنیم که درون کد های اچ تی ام ال کاربرد وسیع دارد

همچنین میتوانیم از تگ
<!  !>
استفاده کنیم که باید در قسمت کانفیگ آپاچی آن را ست کنیم که البته توصیه نمیشود.
up
-27
crazytonyi at gmail dot com
4 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
/*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
/*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.
To Top