PHPは、動的なウェブサイトを構築するためのサーバーサイド・スクリプト言語として、2026年現在も圧倒的なシェアを誇っています。
PHPを記述する際に避けて通れないのが、プログラムの開始と終了を明示するための「PHPタグ」です。
基本的な文法でありながら、記述方法やルールの違いによって、意図しないエラーやセキュリティリスクを招くことも少なくありません。
本記事では、PHPタグの最新の書き方や使い分けのルール、エラーを未然に防ぐためのポイントについて詳しく解説します。
PHPタグの基本と標準的な書き方
PHPのコードを記述する際、最も標準的で推奨されるのが「標準タグ」と呼ばれる形式です。
このセクションでは、基本的な記述方法と、現代のPHP開発において守るべきルールについて見ていきましょう。
標準的なPHPタグ(<?php … ?>)の役割
PHPスクリプトを記述する場合、原則として<?phpで書き始め、?>で閉じるのが基本です。
このタグで囲まれた部分がPHPエンジンによって解釈され、プログラムとして実行されます。
<?php
// ここにPHPのコードを記述します
echo "PHPの世界へようこそ";
?>
PHPの世界へようこそ
この書き方は、PHPのバージョンを問わず、またサーバーの設定に依存せずに動作するため、最も汎用性が高い方法です。
終了タグの省略とそのメリット
PHPのみで構成されるファイル(クラス定義や関数ライブラリなど)では、ファイルの末尾にある終了タグ(?>)を省略することが推奨されています。
これは、終了タグの後に意図しない改行や半角スペースが含まれてしまうのを防ぐためです。
もし終了タグの後に余計な空白が含まれていると、HTTPヘッダーの送信後にデータが出力されてしまい、「Cannot modify header information – headers already sent」というエラーの原因になります。
<?php
// 終了タグを省略した例
class UserHandler {
public function getName() {
return "Taro";
}
}
// ここでファイルを終了し、?> は書かない
現代のコーディング規約であるPSR-12などでも、純粋なPHPファイルでの終了タグ省略は必須ルールとされています。
短縮二重引用符タグ(<?= … ?>)の活用
HTMLの中に短いPHPの値を埋め込む際、非常に便利なのが「短縮echoタグ」です。
このタグは、値を画面に出力する際に特化した書き方であり、記述を簡潔にすることができます。
短縮echoタグの書き方とメリット
通常、変数を出力する場合は<?php echo $variable; ?>と記述しますが、これを<?= $variable ?>と短縮できます。
テンプレートファイルなどで多くの変数を表示する場合、コードの見通しが非常に良くなります。
<!-- 標準タグでの記述 -->
<p><?php echo $userName; ?>さん、こんにちは。</p>
<!-- 短縮echoタグでの記述 -->
<p><?= $userName ?>さん、こんにちは。</p>
以前の古いPHPでは、サーバーの設定(php.ini)によってはこのタグが使えないこともありましたが、PHP 5.4以降、このタグは常に有効化されており、安全に使用することが可能です。
短縮echoタグを使用する際の注意点
便利ではありますが、「出力専用」であるという点を忘れてはいけません。
タグの中で条件分岐やループ処理を行うことはできないため、ロジックが含まれる場合は標準タグを使用します。
また、セキュリティの観点から、ユーザーが入力した値を表示する際は必ずエスケープ処理を組み合わせるようにしましょう。
<!-- 安全な出力例 -->
<input type="text" value="<?= htmlspecialchars($inputValue, ENT_QUOTES, 'UTF-8') ?>">
使用を避けるべき古いPHPタグ
PHPの長い歴史の中では、現在では非推奨、あるいは廃止されたタグの書き方が存在します。
これらを知らずに使ってしまうと、サーバーの移設時などに突然プログラムが動かなくなるリスクがあります。
短縮開始タグ(<? … ?>)のリスク
<?phpではなく<?だけで始める書き方は「短縮開始タグ(short_open_tag)」と呼ばれます。
このタグはphp.iniの設定でshort_open_tag = Onになっている環境でしか動作しません。
多くのモダンな環境やクラウドサービスでは、互換性やXML宣言との衝突を避けるためにデフォルトで無効化されています。
汎用性の高いコードを書くためには、決して使用してはいけない書き方の一つです。
廃止されたASP形式タグとscriptタグ
かつてのPHPには、ASP(Active Server Pages)風の<% ... %>や、<script language="php">といった記述方法がありました。
しかし、これらはPHP 7.0において完全に削除されています。
2026年現在の開発現場で目にすることはまずありませんが、古い教材やWebサイトを参考にする際は注意してください。
PHPタグに関するエラー回避のポイント
PHPタグの扱いに慣れていないと、単純なミスでサイト全体が真っ白になる「ホワイトアウト」を引き起こすことがあります。
ここでは、初心者が陥りやすいミスとその対策を整理します。
タグの入れ子構造に関するミス
PHPタグは、「入れ子(ネスト)」にすることはできません。
<?php ... <?php ... ?> ... ?>のような記述は、パースエラー(文法エラー)の原因となります。
複数の処理を記述する場合は、一つのタグの中にまとめて書くか、一度タグを閉じてから再度新しいタグを開始する必要があります。
セミコロンの打ち忘れと省略ルール
PHPの命令の最後には通常セミコロン(;)が必要ですが、「終了タグの直前」に限ってはセミコロンを省略できます。
そのため、<?= $var ?>の中にセミコロンがなくてもエラーにはなりません。
ただし、複数行にわたる処理を書く場合は、最後の行以外には必ずセミコロンが必要ですので、統一感を出すために常に付ける癖をつけておくと安全です。
<?php
echo "1行目";
echo "2行目" // ここは?>の直前なので省略可能ですが、推奨はされません
?>
全角スペースによるエラー
意外と多いのが、<?phpの「?」と「p」の間に全角スペースが入ってしまったり、タグの開始前に全角スペースが存在するケースです。
全角スペースはPHPエンジンによって「出力すべき文字」とみなされるため、予期せぬ動作を招きます。
コードを書く際は、エディタの設定で全角スペースを可視化しておくことを強くおすすめします。
PHPタグの使い分けまとめ表
これまでに解説したタグの種類と、現在の開発シーンでの推奨度を以下の表にまとめました。
| タグの形式 | 名称 | 推奨度 | 主な用途 |
|---|---|---|---|
<?php ... ?> | 標準タグ | ◎(最高) | ロジック、クラス定義、関数など全般 |
<?= ... ?> | 短縮echoタグ | ○(推奨) | テンプレート内での変数出力 |
<? ... ?> | 短縮タグ | ×(非推奨) | 古い環境との互換性用(新規利用禁止) |
<% ... %> | ASP形式 | ××(廃止) | 使用不可 |
モダンな開発におけるテンプレートエンジンの台頭
2026年現在のプロフェッショナルな開発現場では、PHPタグを直接HTMLに埋め込むのではなく、「テンプレートエンジン」を利用することが一般的です。
例えば、Laravelフレームワークで使用される「Blade」や、Symfonyなどで使われる「Twig」などが代表的です。
テンプレートエンジンでのタグ表現
Bladeでは、PHPタグの代わりに{{ $variable }}という独自の記法を使用します。
これは内部的にPHPの標準タグや短縮echoタグに変換されますが、自動的にエスケープ処理を行ってくれるため、より安全に開発が進められます。
{{-- Bladeでの記述例 --}}
<p>{{ $userName }}さん、こんにちは。</p>
しかし、こうしたツールも「土台」となっているのは今回解説したPHPタグの仕組みです。
ライブラリやフレームワークの中身を理解し、デバッグを行うためには、ネイティブなPHPタグの知識が欠かせません。
まとめ
PHPタグは、プログラムの境界を決定する非常に重要な要素です。
基本となる<?php ... ?>を正しく使いこなし、純粋なPHPファイルでは終了タグを省略するという習慣を身につけましょう。
また、表示処理においては<?= ... ?>を適切に活用することで、コードの可読性を大幅に向上させることができます。
古い書き方や設定依存の記述を避け、常に最新のベストプラクティスを意識することが、エラーの少ない堅牢なシステム開発への第一歩となります。
今回学んだ知識を活かして、美しくメンテナンスしやすいPHPコードを記述していきましょう。
