PHP 8.2通过include/require引入HTML或PHP导航文件实现导航栏复用:方式一引入纯HTML(无PHP解析);方式二引入PHP文件支持高亮与XSS防护;方式三用require_once+函数封装提升可维护性。

PHP 8.2 本身不“调用 HTML”,而是在 PHP 文件中输出或引入 HTML 内容,再由 Web 服务器(如 Apache 或 Nginx)将最终生成的 HTML 发送给浏览器。要实现导航栏的复用与渲染,核心是:把导航栏写成独立的 HTML 片段(或含 PHP 动态逻辑的 .php 文件),再用 PHP 的 include 或 require 在各页面中加载它。
下面分三类常见、实用的方式说明,均兼容 PHP 8.2,无需额外扩展,开箱即用:
✅ 方式一:用 include 引入纯 HTML 导航文件(最轻量)
适合导航内容静态、无逻辑判断的场景。
-
创建
navbar.html(注意是.html,不是.php):立即学习“PHP免费学习笔记(深入)”;
<nav class="navbar"> <a href="index.php">首页</a> <a href="about.php">关于</a> <a href="contact.php">联系</a> </nav>
-
在
index.php等页面中引入:<!DOCTYPE html> <html> <body> <?php include 'navbar.html'; ?> <main>这里是首页内容...</main> </body> </html>
⚠️ 注意:include 会原样插入文本,不解析其中的 PHP 代码。所以 navbar.html 里不能写 <?php ... ?> —— 若需动态能力,请用方式二或三。
✅ 方式二:用 include 引入 PHP 导航文件(推荐,支持高亮/权限等逻辑)
这是最常用、最灵活的做法,兼容 PHP 8.2 的所有特性(如 nullsafe 运算符、只读类等)。
-
创建
navbar.php:<?php $currentPage = basename($_SERVER['SCRIPT_NAME']); // 如 'about.php' $menuItems = [ ['url' => 'index.php', 'text' => '首页'], ['url' => 'about.php', 'text' => '关于'], ['url' => 'contact.php', 'text' => '联系'], ]; ?> <nav class="navbar"> <?php foreach ($menuItems as $item): ?> <a href="<?= htmlspecialchars($item['url']) ?>" class="<?= $item['url'] === $currentPage ? 'active' : '' ?>"> <?= htmlspecialchars($item['text']) ?> </a> <?php endforeach; ?> </nav> -
在
index.php中使用:<?php include 'navbar.php'; ?> <main>欢迎来到首页</main>
✅ 优势:
- 自动高亮当前页(
$currentPage匹配) - 输出前用
htmlspecialchars()防 XSS(PHP 8.2 强烈建议) - 可随时加入登录状态判断、菜单权限控制等逻辑
✅ 方式三:用 require_once + 函数封装(适合中大型项目)
把导航逻辑封装成函数,提升复用性与可测性。
- 创建
components.php:<?php function renderNavbar($current = null): void { if ($current === null) { $current = basename($_SERVER['SCRIPT_NAME'] ?? 'index.php'); } $items = [['url' => 'index.php', 'text' => '首页'], /* ... */]; echo '<nav class="navbar">'; foreach ($items as $i) { $cls = $i['url'] === $current ? ' class="active"' : ''; printf('<a href="%s"%s>%s</a>', htmlspecialchars($i['url']), $cls, htmlspecialchars($i['text']) ); } echo '</nav>'; } - 在页面中调用:
<?php require_once 'components.php'; ?> <?= renderNavbar() ?> <main>页面主体</main>
✅ 优势:
- 函数可被多个模板复用
- 支持传参(如
$current便于测试或子目录页适配) - 符合 PHP 8.2 对类型安全和可维护性的要求
不需要用 AJAX、iframe 或 JS 拼接 HTML —— 那些是客户端方案,增加请求、延迟、SEO 风险,且无法服务端高亮。PHP 8.2 原生的 include / require 就是最直接、高效、安全的渲染方式。



















