0Pricing
PHP Academy · 课时

PHP 标签与嵌入语法

在 HTML 中使用 PHP 的开始和结束标签,以及短 echo 语法。

PHP 标签与嵌入语法 是 CoddyKit 上的免费 PHP Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 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 一词即可输出值:

<!-- 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>

PHP 位于 HTML 属性中

请将 PHP 嵌入 HTML 属性中,并始终进行转义:

<?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 的小于号 ?)——它依赖 php.ini 设置,并且会与 XML 冲突。请始终使用完整的开始标签或短回显形式:

<?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.

模板中的内联条件表达式

请直接在模板中使用内联三元表达式或空值合并运算符:

<?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 代码块

一个文件可以在 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 模板中输出变量时,推荐使用哪种 PHP 输出语法?

回顾:PHP 标签与嵌入

要点:

  • 代码块使用 <?php ?>,输出使用 <?= ?>
  • 始终使用 htmlspecialchars() 转义输出
  • 在仅包含 PHP 的文件末尾省略结束标签
  • 使用输出缓冲捕获渲染后的 HTML
  • 使用 PHP_EOL 生成可移植的换行符

常见问题解答

「PHP 标签与嵌入语法」课时是免费的吗?

是的 — 「PHP 标签与嵌入语法」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 PHP Academy 课程的其余内容,请升级到 CoddyKit PRO。 PHP Academy 课程共包含 4 节课。

「PHP 标签与嵌入语法」这节课中我会学到什么?

在 HTML 中使用 PHP 的开始和结束标签,以及短 echo 语法。 你通过在浏览器中直接运行的动手代码来练习 PHP Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 PHP Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 PHP Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「PHP 标签与嵌入语法」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 PHP Academy 课中编写并运行代码吗?

能。每节 PHP Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. PHP 标签与嵌入语法
  2. 使用 PHP 循环生成动态 HTML
  3. 包含和引入文件
  4. 模板模式:分离逻辑与视图
← 返回 PHP Academy