PHPタグと埋め込み構文
HTML内でPHPの開始タグ・終了タグと短縮echo構文を使います
「PHPタグと埋め込み構文」はCoddyKit上の無料PHP Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPHP Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 PHP Academyコースには全4レッスンが含まれています。
PHP と HTML の混在
PHP は HTML ファイル内に埋め込めるように設計されています。サーバーが .php ファイルを処理すると、PHP タグの間にあるすべての内容が実行され、それ以外の内容はそのままブラウザーに送信されます。
標準の PHP タグ
標準的な PHP の開始タグと終了タグです。
<!DOCTYPE html>
<html><body>
<?php
$name = 'Alice';
echo 'Hello, ' . $name;
?>
<p>This is regular HTML.</p>
<?php
echo '<p>Back in PHP!</p>';
?>
</body></html>短縮 echo タグ
短縮 echo タグを使用すると、echo という語を書かずに値を出力できます。
<!-- Long form -->
<h1><?php echo $pageTitle; ?></h1>
<!-- Short form (preferred in templates) -->
<h1><?= $pageTitle ?></h1>
<!-- With escaping -->
<h1><?= htmlspecialchars($pageTitle, ENT_QUOTES, 'UTF-8') ?></h1>出力は必ずエスケープする
ユーザーが制御できるデータは、エスケープせずに出力してはいけません。
<?php
$unsafe = '<script>alert("xss")</script>';
$safe = htmlspecialchars($unsafe, ENT_QUOTES, 'UTF-8');
// Define a helper:
function e(string $str): string {
return htmlspecialchars($str, ENT_QUOTES | ENT_HTML5, 'UTF-8');
}
?>
<p><?= e($userInput) ?></p>HTML 属性内の PHP
HTML 属性内に PHP を埋め込みます。必ずエスケープしてください。
<?php
$url = '/profile/' . $user['id'];
$active = $currentPage === 'home' ? 'active' : '';
$count = 5;
?>
<a href="<?= htmlspecialchars($url) ?>" class="nav-link <?= $active ?>">
Inbox <span class="badge"><?= $count ?></span>
</a>短縮タグを避ける
短縮開始タグ(php を伴わない less-than ?)は推奨されません。php.ini の設定に依存し、XML と競合するためです。必ず完全な開始タグまたは短縮 echo 形式を使用してください。
<?php
// These are the safe, portable forms:
// <?php echo $name; ?> — full form
// <?= $name ?> — short echo (always enabled 5.4+)
// The short open tag <? is different and unreliable
// Do not use it in code intended for multiple environments.テンプレート内のインライン条件分岐
テンプレート内でインラインの三項演算子または null 合体演算子を直接使用します。
<?php
$role = 'admin';
$loggedIn = true;
?>
<nav>
<?= $loggedIn ? 'Welcome back!' : 'Please log in' ?>
<?php if ($role === 'admin'): ?>
<a href="/admin">Admin Panel</a>
<?php endif; ?>
</nav>出力の取得に使う出力バッファリング
出力バッファリングを使用して、PHP と HTML の出力を変数に取り込みます。
<?php
function renderCard(string $title, string $body): string {
ob_start();
?>
<div class="card">
<h2><?= htmlspecialchars($title) ?></h2>
<p><?= htmlspecialchars($body) ?></p>
</div>
<?php
return ob_get_clean();
}
echo renderCard('PHP', 'A server-side scripting language.');クロスプラットフォーム対応の PHP_EOL
どのプラットフォームでも正しい改行を使用するために PHP_EOL を使います。
<?php
$lines = ['Line 1', 'Line 2', 'Line 3'];
$content = implode(PHP_EOL, $lines);
file_put_contents('output.txt', $content);
// PHP_EOL = "\n" on Linux/Mac, "\r\n" on Windows
echo PHP_EOL === "\n" ? 'Unix line ending' : 'Windows line ending';終了タグの省略
ベストプラクティスとして、PHP だけで構成されるファイルの末尾では PHP の終了タグを省略します。これにより、ヘッダーが送信される前に意図しない空白が送信されるのを防げます。
<?php
// config.php — PHP only, no closing tag needed
defined('APP_KEY') or define('APP_KEY', 'secret123');
define('DB_HOST', 'localhost');
define('DB_NAME', 'myapp');
// No closing PHP tag here — prevents header issues複数の PHP ブロック
1 つのファイルに、HTML と交互に複数の PHP ブロックを含めることができます。
<?php
$items = ['Apple', 'Banana', 'Cherry'];
$count = count($items);
?>
<h2>Shopping List (<?= $count ?> items)</h2>
<ul>
<?php foreach ($items as $item): ?>
<li><?= htmlspecialchars($item) ?></li>
<?php endforeach; ?>
</ul>確認問題
HTML テンプレートで変数を echo する場合、推奨される PHP の出力構文はどれですか。
まとめ: PHP タグと埋め込み
重要なポイント:
- コードブロックには
<?php ?>、出力には<?= ?>を使用する - 常に
htmlspecialchars()で出力をエスケープする - PHP だけで構成されるファイルの末尾では終了タグを省略する
- 出力バッファリングを使用してレンダリング済み HTML を取得する
- 移植性のある改行には PHP_EOL を使用する
よくある質問
「PHPタグと埋め込み構文」レッスンは無料ですか?
はい。「PHPタグと埋め込み構文」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、PHP Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 PHP Academyコースには全4レッスンが含まれています。
「PHPタグと埋め込み構文」で何を学びますか?
HTML内でPHPの開始タグ・終了タグと短縮echo構文を使います ブラウザで直接実行するハンズオンコードでPHP Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
PHP Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのPHP Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「PHPタグと埋め込み構文」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このPHP Academyレッスンでコードを書いて実行できますか?
はい。すべてのPHP Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。