<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/tutorial.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ja',
  ),
  'this' => 
  array (
    0 => 'tutorial.useful.php',
    1 => '実用的な例',
    2 => '実用的な例',
  ),
  'up' => 
  array (
    0 => 'tutorial.php',
    1 => '簡易チュートリアル',
  ),
  'prev' => 
  array (
    0 => 'tutorial.firstpage.php',
    1 => 'PHP を使用する初めてのページ',
  ),
  'next' => 
  array (
    0 => 'tutorial.forms.php',
    1 => 'フォームの処理',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ja',
    'path' => 'chapters/tutorial.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="tutorial.useful" class="sect1">
   <h2 class="title">実用的な例</h2>
   <p class="para">
    次に、より実用的なことをしてみましょう。
    ページを見ているユーザーが使用しているブラウザの種類を確認してみます。
    これを行なうには、ブラウザが
    HTTP リクエストの一部として送信した user agent 文字列を調べます。
    この情報は、<a href="language.variables.php" class="link">変数</a>
    に保存されています。PHP では、変数名は常にドル記号で始まります。
    ここで使用する変数は、<var class="varname"><a href="reserved.variables.server.php" class="classname">$_SERVER['HTTP_USER_AGENT']</a></var>
    です。
   </p>
   <blockquote class="note"><p><strong class="note">注意</strong>: 
    <p class="para">
     <var class="varname"><a href="reserved.variables.server.php" class="classname">$_SERVER</a></var> は、
     Web サーバー関連情報を全て保持する PHP の特別な予約変数です。詳細は、
     <a href="language.variables.superglobals.php" class="link">スーパーグローバル</a>
     を参照ください。
    </p>
   </p></blockquote>
   <p class="para">
    この変数を表示するには、以下のようにします。
   </p>
   <p class="para">
    <div class="example" id="example-1">
    <p><strong>例1 変数を出力する (配列要素)</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">$_SERVER</span><span style="color: #007700">[</span><span style="color: #DD0000">'HTTP_USER_AGENT'</span><span style="color: #007700">];<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

    <div class="example-contents"><p>
      このスクリプトの出力例は以下のようになります。
     <div class="example-contents screen">
<div class="cdata"><pre>
Mozilla/5.0 (Linux) Firefox/112.0
</pre></div>
     </div>
    </p></div>
   </div>
   </p>
   <p class="para">
    PHP で利用可能な変数の<a href="language.types.php" class="link">型</a>
    には多くの種類があります。上の例では、
    <a href="language.types.array.php" class="link">配列</a>
    の要素を出力しています。配列は、非常に有用です。
   </p>
   <p class="para">
    <var class="varname"><a href="reserved.variables.server.php" class="classname">$_SERVER</a></var> は、PHP
    で自動的に利用可能な変数のひとつに過ぎません。マニュアルの
    <a href="reserved.variables.php" class="link">定義済の変数</a>
    のセクションでリストを参照することができます。
    あるいは、完全なリストを取得するには、さきほどのセクションで使用した
    <span class="function"><a href="function.phpinfo.php" class="function">phpinfo()</a></span> 関数の出力を確認します。
   </p>
   <p class="para">
    PHP タグの中に複数の PHP 命令を置くことができ、echo
    文以上のことを行なうコードブロックを作成することができます。
    例えば、Firefox かを調べたい場合は、
    以下のようにします。
   </p>
   <p class="para">
    <div class="example" id="example-2">
     <p><strong>例2 
      <a href="language.control-structures.php" class="link">制御構造</a> および
      <a href="language.functions.php" class="link">関数</a>の使用例
     </strong></p>
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">if (</span><span style="color: #0000BB">str_contains</span><span style="color: #007700">(</span><span style="color: #0000BB">$_SERVER</span><span style="color: #007700">[</span><span style="color: #DD0000">'HTTP_USER_AGENT'</span><span style="color: #007700">], </span><span style="color: #DD0000">'Firefox'</span><span style="color: #007700">)) {<br />    echo </span><span style="color: #DD0000">'あなたはFirefoxを使用しています'</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

     <div class="example-contents"><p>
      このスクリプトの出力例は以下のようになります。
      <div class="example-contents screen">
<div class="cdata"><pre>
あなたはFirefoxを使用しています
</pre></div>
      </div>
     </p></div>
    </div>
   </p>
   <p class="para">
    ここで、新しい概念をいくつか導入します。
    <a href="control-structures.if.php" class="link">if</a> 文を使用しています。
    C 言語の基本構文を知っているとしたら、理解できると思います。
    C 言語や上記の構文を使用する他の言語をあまり知らない場合には、
    PHP の入門書を手にとって最初の数章を読むか、このマニュアルの
    <a href="langref.php" class="link">言語リファレンス</a>の部分を読むべきです。
   </p>
   <p class="para">
    二番目の新しい概念は、<span class="function"><a href="function.str-contains.php" class="function">str_contains()</a></span> 関数のコールです。
    <span class="function"><a href="function.str-contains.php" class="function">str_contains()</a></span> は PHP に組み込まれた関数で、
    指定された文字列が、別の文字列に含まれているかを判定します。この場合、
    <var class="varname"><a href="reserved.variables.server.php" class="classname">$_SERVER['HTTP_USER_AGENT']</a></var> (いわゆる干し草の山
    【haystack】) の中で
    <code class="literal">&quot;Firefox&quot;</code> (いわゆる針【needle】) を探しています。
    この文字列が見つかった場合、
    この関数は <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> を返し、
    見つからなかった場合には <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> を返します。
    この関数が <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> を返すと、
    <a href="control-structures.if.php" class="link">if</a>
    文は <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> と評価し、その{波括弧}の中のコードが実行されます。
    そうでない場合は、実行されません。
    <a href="control-structures.if.php" class="link">if</a>,
    <a href="control-structures.else.php" class="link">else</a> と
    <span class="function"><a href="function.strtoupper.php" class="function">strtoupper()</a></span> や <span class="function"><a href="function.strlen.php" class="function">strlen()</a></span>
    のような他の関数で、似たような例を作ってみてください。
    関連するマニュアルの各ページにも例が載っています。
    関数の使用法に自信がない場合には、マニュアルの
    <a href="about.prototypes.php" class="link">関数定義の読み方</a>および
    <a href="language.functions.php" class="link">PHP関数</a>のセクションの両方を
    読んでみると良いでしょう。
   </p>
   <p class="para">
    この例を少し発展させて、PHP ブロックの中からでも PHP
    モードから出たり入ったりすることができることを以下に示します。
   </p>
   <p class="para">
    <div class="example" id="example-3">
     <p><strong>例3 HTML および PHP モードの両方を混在させる</strong></p>
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">if (</span><span style="color: #0000BB">str_contains</span><span style="color: #007700">(</span><span style="color: #0000BB">$_SERVER</span><span style="color: #007700">[</span><span style="color: #DD0000">'HTTP_USER_AGENT'</span><span style="color: #007700">], </span><span style="color: #DD0000">'Firefox'</span><span style="color: #007700">)) {<br /></span><span style="color: #0000BB">?&gt;<br /></span>&lt;h3&gt;str_contains() がtrueを返しました&lt;/h3&gt;<br />&lt;center&gt;あなたはFirefoxを使用しています&lt;/center&gt;<br /><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">} else {<br /></span><span style="color: #0000BB">?&gt;<br /></span>&lt;h3&gt;str_contains()がfalseを返しました&lt;/h3&gt;<br />&lt;center&gt;あなたはFirefoxを使用していません&lt;/center&gt;<br /><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

     <div class="example-contents"><p>
      この例の出力は以下のようになります。
      <div class="example-contents screen">
<div class="cdata"><pre>
&lt;h3&gt;str_contains() がtrueを返しました&lt;/h3&gt;
&lt;center&gt;あなたはFirefoxを使用しています&lt;/center&gt;
</pre></div>
      </div>
     </p></div>
    </div>
   </p>
   <p class="para">
    何かを出力する際に PHP の echo 文を使用する代わりに、PHP
    モードを抜けて通常の HTML を送信しています。ここで注意すべき重要で強力な点は、
    スクリプトの論理フローが損なわれないということです。
    <span class="function"><a href="function.str-contains.php" class="function">str_contains()</a></span> が <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> または <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>
    のどちらを返すか、言い換えると<code class="literal">Firefox</code>
    が見つかったかどうかに基づき、HTML
    ブロックだけが見る側に送信されることになります。
   </p>
  </div><?php manual_footer($setup); ?>