PHP タグ
命令の分離
基本的な構文
PHP Manual

## HTML からの脱出

PHP のパーサは、開始タグと終了タグに囲まれていない部分をすべて無視します。 そのおかげで、PHP のファイルにそれ以外のコンテンツを混在させることができるのです。 たとえば PHP を HTML ドキュメントに組み込んで、テンプレートを作ったりすることもできます。

`<p>この部分は PHP から無視され、そのままブラウザには表示されます。</p>
<?php echo '一方、この部分はパースされます。'; ?>
<p>この部分も PHP から無視され、そのままブラウザには表示されます。</p>`
これは期待通りに動作します。なぜなら、PHP インタプリタは ?> 終了タグを見つけると それ以降新たに開始タグを見つけるまでの内容を何でも出力するからです (終了タグの直後の改行は別です。 命令の分離 を参照ください)。 しかし、PHP が条件文の中にいる場合は話が別です。 その場合は、まず条件式の結果を判定してから何をスキップするかを判断します。 次の例を参照ください。

条件文を使った例です。

例1 条件文を使った高度な脱出

`<?php if ($expression == true): ?>
条件式が真の場合にこれが表示されます。
<?php else: ?>
それ以外の場合にこちらが表示されます。
<?php endif; ?>`
この例では、PHP は条件を満たさないブロックを処理しません。たとえそれが PHP の開始タグと終了タグに囲まれた部分でなくても、条件文にしたがってそこを読み飛ばします。 というのも、PHP のインタプリタは条件を満たさない箇所をブロックごと読み飛ばすからです。

大量のテキストを出力する際に echo や print を用いることを考えると、このように一度 PHP のパースモードを抜けるほうが効率的です。

PHP で用いられるタグは 4 種類あります。 これらのうちの 2 つ、<?php ?> と <script language="php"> </script> は常に使用することができます。 残りの 2 つは短縮型のタグと ASP スタイルの タグで、これらは php.ini ファイルによって有効か無効かを切り替えられます。 中には短縮型のタグや ASP スタイルのタグを 便利に感じる人がいるかも知れませんが、長いタグに比べると移植性に欠けます。 また一般的には推奨されていません。

> 注意:

> さらに注意しなければならないことがあります。PHP コードを XML や XHTML に 埋め込む場合には、標準規格に従うために <?php ?> タグを使用する 必要があるでしょう。

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

`1. <?php echo 'XHTMLまたはXMLドキュメントを処理したい場合は、この方法が良いでしょう'; ?>
2. <script language="php">
echo '(FrontPageのような) いくつかのエディタ は処理命令を好み
ません';
</script>
3. <? echo 'これは、SGML を処理する最もシンプルな方法です'; ?>
<?= expression ?> This is a shortcut for "<? echo expression ?>"
4. <% echo 'オプションでASP形式のタグを使用可能です'; %>
<%= $variable; # これは、"<%echo .." のショートカットです。%>`

例の 1. と 2. のタグは常に利用可能です。中でも 1. のタグは最も一般的で 推奨される方法です。

短縮型のタグ（例 3.）が有効なのは、php.ini 設定ファイルのディレクティブ short_open_tag が 有効になっている場合か PHP が --enable-short-tags オプションつきで configure されている場合のみです。

ASP 型のタグ（例 4.）が有効なのは、 php.ini 設定ファイルのディレクティブ asp_tags が有効になっている場合のみです。

> 注意:

> 再利用されるか、または、自分の制御下にないPHPサーバーで運用される アプリケーションまたはライブラリを開発する場合、短縮型のタグの 使用は避けるべきです。これは、短縮型のタグがターゲットサーバー でサポートされていない可能性があるためです。 可搬性のある、再配布可能なコードでは、短縮型のタグを使用しない ようにしてください。

> 注意:

> PHP 5.2 以前では、開始タグ <?php だけを書いてそれ以外に何も書いていないファイルは パーサが処理することができませんでした。PHP 5.3 以降では、開始タグの後に空白が一文字でもあればそのようなファイルもパースできます。

> 注意:

> PHP 5.4 以降では、短い形式の echo タグ <?= は常に有効なタグとして認識されるようになりました。 short_open_tag の設定には影響を受けません。

PHP タグ
命令の分離
基本的な構文
PHP Manual