ここで、ページの訪問者が使用しているブラウザを確認するなど、より実用的なスクリプトをいくつか書いてみましょう。これを行うには、ブラウザによって送信された HTTP リクエストの一部であるユーザーのエージェント文字列を確認する必要があります。この情報は変数に保存されます。 PHP では、変数は常にドル記号で始まります。現在関心のある変数は $_SERVER['HTTP_USER_AGENT'] です。
追記: $_SERVER は特別な PHP 予約変数であり、Web サーバーによって提供されるすべての情報が含まれており、スーパーグローバル変数 と呼ばれます。詳細については、このマニュアルの「スーパーグローバル変数」を参照してください。これらの特殊変数は、PHP » 4.1.0 バージョンで導入されました。その前に、$HTTP_SERVER_VARS などの $HTTP_*_VARS 配列を使用します。現在は非推奨になっていますが、新しいバージョンにはまだ存在しています (「古いコード」セクションの注を参照)。
変数を表示するには、単に次の操作を実行します:
例 #1 変数 (配列要素) を出力する
<?php echo $_SERVER [ 'HTTP_USER_AGENT' ]; ?>
このスクリプトの出力は次のようになります:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
PHP 変数にはさまざまなタイプがあります。上の例では、配列のセルを出力しました。配列は非常に便利なタイプの変数です。
$_SERVER は、PHP によって自動的にグローバル化される変数の 1 つにすぎません。 「事前定義された変数」セクションをチェックしてこれらの変数のリストを表示することも、前のセクションの例の phpinfo() 関数の出力を通じて表示することもできます。
複数の PHP ステートメントを PHP タグに追加できます。また、単純なエコー以上のことを行うコード ブロックを作成することもできます。たとえば、Internet Explorer を識別する必要がある場合は、次の操作を行うことができます:
例 #2 プロセス制御関数の使用
<?php if ( strpos ( $_SERVER [ 'HTTP_USER_AGENT' ], 'MSIE' ) !== FALSE ) { echo '正在使用 Internet Explorer。<br />' ; } ?>
このスクリプトの出力は次のようになります:
正在使用 Internet Explorer。<br />
ここではいくつかの新しい原則が導入されています。上記では if ステートメントが使用されています。ユーザーが C 言語の基本的な構文に精通している場合は、これに精通している必要があります。そうでない場合は、PHP の入門書を手に取り、最初の 2 ~ 3 章を読むか、「言語」を読む必要があるかもしれません。このマニュアルの「参照」の章のセクションを参照してください。
導入する必要がある 2 番目の原則は、strpos() 関数の呼び出しです。 strpos() は、PHP の組み込み関数 で、文字列内の別の文字列を検索します。たとえば、$_SERVER['HTTP_USER_AGENT'] (いわゆる干し草の山) 変数で 'MSIE' を見つける必要があります。文字列 (いわゆる針) がこの干し草の山で見つかった場合 (「針狩り」)、関数は干し草の山の先頭を基準とした針の位置を返します。見つからない場合は FALSE を返します。関数が FALSE を返さない場合、条件が TRUE と評価され、中括弧 {} 内のコードが実行されます。それ以外の場合、コードは実行されません。 if、else、および strtoupper() や strlen() などのその他の関数を使用して、同様のスクリプトを自分で作成してみることもできます。このマニュアルの関連ページには例も含まれています。関数の使用方法がわからない場合は、マニュアルの「関数の定義の見方」と「関数」の該当する章を参照してください。
以下では、PHP コード ブロックの途中であっても、PHP モードに出入りする方法をさらに示します:
例 #3 HTML と PHP モードの混合
<?php if ( strpos ( $_SERVER [ 'HTTP_USER_AGENT' ], 'MSIE' ) !== FALSE ) { ?> <h3>strpos() 肯定没有返回假 (FALSE)</h3> <p>正在使用 Internet Explorer</p> <?php } else { ?> <h3>strpos() 肯定返回假 (FALSE)</h3> <center><b>没有使用 Internet Explorer</b></center> <?php } ?>
このスクリプトの出力は次のようになります:
<h3>strpos() 肯定没有返回假 (FALSE)</h3> <p>正在使用 Internet Explorer</p>
上記では PHP を使用しています。出力するための echo ステートメントとの違いは、PHP モードを抜け出して HTML コードを直接記述したことです。ここで、スクリプトの論理効率はどちらの場合でも同じであることに注意することが重要です。 strpos() 関数の戻り値が TRUE か FALSE か、つまり文字列「MSIE」が見つかったかどうかを判断した後、最終的に 1 つの HTML ブロックだけがビューアに送信されます。
以上が実践的なPHPスクリプト作成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。