PHP タグ

PHP はファイルを解析して開始タグと終了タグ (<?php?>) を探します。 タグが見つかると、PHP はコードの実行を開始したり終了したりします。 このような仕組みにより、PHP を他のあらゆる形式のドキュメント中に 埋め込むことができるのです。つまり、開始タグと終了タグで囲まれている 箇所以外のすべての部分は、PHP パーサに無視されます。

PHP では、短い形式のechoタグ <?= も使えます。 これは、より冗長な <?php echo を短くしたものです。

例1 PHP の開始タグと終了タグ

1.  <?php echo 'XHTMLまたはXMLドキュメントの中でPHPコードを扱いたい場合は、このタグを使いましょう'?>

2.  短縮型の echo タグを使って <?= 'この文字列を表示' ?> とすることもできます。
    これは <?php echo 'この文字列を表示' ?> と同じ意味になります。

3.  <? echo 'このコードは短縮型のタグに囲まれていますが、'.
            'short_open_tag が有効な場合にしか動作しません'; ?>

短縮型のタグ(例 3.)はデフォルトで有効ですが、 php.ini 設定ファイルのディレクティブ short_open_tag で無効にすることもできますし、 --disable-short-tags オプション付きで configure した場合は、 デフォルトで無効にすることも出来ます。

注意:

短縮形のタグは無効にすることができるので、 互換性を最大限保つために、通常のタグ (<?php ?> and <?= ?>) を使うことを推奨します。

ファイルが PHP コードのみを含む場合は、ファイルの最後の終了タグは省略するのがおすすめです。 終了タグの後に余分な空白や改行があると、予期せぬ挙動を引き起こす場合があるからです。 余分な空白や改行のせいで PHP が出力バッファリングを開始し、その時点の内容を意図せず出力してしまうことになります。

<?php
echo "みなさん、こんにちは";

// ... いろんなコードたち

echo "最後のごあいさつ";

// PHP 終了タグを書かずに、ここでスクリプトを終わります。

add a note add a note

User Contributed Notes 4 notes

up
2
crazytonyi at gmail dot com
5 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.
up
-7
kuzawinski dot marcin at gmail dot com
1 year ago
New lines placed after PHP closing tags are ignored;

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

Output:
AB
C
up
-20
Mark Clements (kennel17.co.uk)
2 years ago
Closing PHP tags are recognised within single-line comments:

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

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

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

    <?php
   
/* Code will not end here ?> as closing tags are ignored inside C-style comments. */
   
?>
up
-26
pl at dot pl
1 year ago
Omit closing tag ?> always whenever you can

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

varia.php
<?php
$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>
<title>Welcome</title>
</head><body></body></html>

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