<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/language.basic-syntax.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ja',
  ),
  'this' => 
  array (
    0 => 'language.basic-syntax.phpmode.php',
    1 => 'HTML からの脱出',
    2 => 'HTML からの脱出',
  ),
  'up' => 
  array (
    0 => 'language.basic-syntax.php',
    1 => '基本的な構文',
  ),
  'prev' => 
  array (
    0 => 'language.basic-syntax.phptags.php',
    1 => 'PHP タグ',
  ),
  'next' => 
  array (
    0 => 'language.basic-syntax.instruction-separation.php',
    1 => '命令の分離',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ja',
    'path' => 'language/basic-syntax.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="language.basic-syntax.phpmode" class="sect1">
   <h2 class="title">HTML からの脱出</h2>
   <p class="para">
    PHP のパーサーは、開始タグと終了タグに囲まれていない部分をすべて無視します。
    そのおかげで、PHP のファイルにそれ以外のコンテンツを混在させることができるのです。
    たとえば PHP を HTML ドキュメントに組み込んで、テンプレートを作ったりすることもできます。
   </p>
   <p class="para">
    <div class="example" id="example-1">
     <p><strong>例1 HTML に PHP を埋め込む</strong></p>
     <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000">&lt;p&gt;この部分は PHP から無視され、そのままブラウザには表示されます。&lt;/p&gt;<br /><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">echo </span><span style="color: #DD0000">'一方、この部分はパースされます。'</span><span style="color: #007700">; </span><span style="color: #0000BB">?&gt;<br /></span>&lt;p&gt;この部分も PHP から無視され、そのままブラウザには表示されます。&lt;/p&gt;</span></code></div>
     </div>

    </div>
   </p>
   <p class="para">
    これは期待通りに動作します。なぜなら、PHP インタプリタは ?&gt; 終了タグを見つけると
    それ以降新たに開始タグを見つけるまでの内容を何でも出力するからです
    (終了タグの直後の改行は別です。
    <a href="language.basic-syntax.instruction-separation.php" class="link">命令の分離</a>
    を参照ください)。
    しかし、PHP が条件文の中にいる場合は話が別です。
    その場合は、まず条件式の結果を判定してから何をスキップするかを判断します。
    次の例を参照ください。
   </p>
   <p class="para">
    条件文を使った例です。
    <div class="example" id="example-2">
     <p><strong>例2 条件文を使った高度な脱出</strong></p>
     <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">if (</span><span style="color: #0000BB">$expression </span><span style="color: #007700">== </span><span style="color: #0000BB">true</span><span style="color: #007700">): </span><span style="color: #0000BB">?&gt;<br /></span>  条件式が真の場合にこれが表示されます。<br /><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">else: </span><span style="color: #0000BB">?&gt;<br /></span>  それ以外の場合にこちらが表示されます。<br /><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">endif; </span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
    この例では、PHP は条件を満たさないブロックを処理しません。たとえそれが
    PHP の開始タグと終了タグに囲まれた部分でなくても、条件文にしたがってそこを読み飛ばします。
    というのも、PHP のインタプリタは条件を満たさない箇所をブロックごと読み飛ばすからです。
   </p>
   <p class="para">
    大量のテキストを出力する際に
    <span class="function"><a href="function.echo.php" class="function">echo</a></span> や <span class="function"><a href="function.print.php" class="function">print</a></span>
    を用いることを考えると、このように一度 PHP のパースモードを抜けるほうが効率的です。
   </p>
   <p class="para">
    PHP コードを XML や XHTML に
    埋め込む場合には、標準規格に従うために &lt;?php ?&gt; タグを使用する
    必要があるでしょう。
   </p>
  </div><?php manual_footer($setup); ?>