以下是PHP与HTML混合编程的多个实用示例及讲解,涵盖不同场景:
示例1:动态表格生成(数据库数据展示)
<?php // 模拟数据库查询结果 $users = [ ['id' => 1, 'name' => '张三', 'email' => 'zhangsan@example.com'], ['id' => 2, 'name' => '李四', 'email' => 'lisi@example.com'] ]; ?> <table class="table-auto border-collapse w-full"> <thead> <tr class="bg-gray-100"> <th class="p-3">ID</th> <th>姓名</th> <th>邮箱</th> </tr> </thead> <tbody> <?php foreach ($users as $user): ?> <tr class="hover:bg-blue-50"> <td class="p-3 border"><?= $user['id'] ?></td> <td class="border"><?= htmlspecialchars($user['name']) ?></td> <td class="border"><?= htmlspecialchars($user['email']) ?></td> </tr> <?php endforeach; ?> </tbody> </table>
功能:
循环输出数据库查询结果到HTML表格
使用
htmlspecialchars()防止XSS攻击结合TailwindCSS实现响应式样式
示例2:条件渲染用户权限面板
<?php $userRole = 'admin'; // 实际从session获取 $showAdminPanel = ($userRole === 'admin'); ?> <div class="p-4 bg-white rounded-lg shadow"> <?php if ($showAdminPanel): ?> <!-- 管理员专属内容 --> <button class="bg-red-500 text-white px-4 py-2 rounded"> 删除用户 </button> <a href="/admin" class="ml-2 text-blue-600">控制台</a> <?php else: ?> <p>普通用户权限</p> <?php endif; ?> </div>
特点:
根据用户角色动态显示界面元素
逻辑判断与HTML直接嵌套
示例3:表单处理与数据回显
<?php // 处理表单提交 $formData = [ 'username' => $_POST['username'] ?? '', 'remember' => isset($_POST['remember']) ]; ?> <form method="post" class="max-w-sm mx-auto"> <div class="mb-4"> <label class="block text-gray-700">用户名</label> <input type="text" name="username" value="<?= htmlspecialchars($formData['username']) ?>" class="w-full p-2 border rounded"> </div> <div class="mb-4"> <label> <input type="checkbox" name="remember" <?= $formData['remember'] ? 'checked' : '' ?>> 记住我 </label> </div> <button type="submit" class="bg-blue-500 text-white px-4 py-2 rounded"> 提交 </button> </form>
安全要点:
使用
??运算符提供默认值表单回显时自动填充已提交数据
复选框状态保持
示例4:分页组件实现
<?php $currentPage = 2; $totalPages = 5; ?> <nav class="flex justify-center mt-8"> <ul class="flex space-x-2"> <?php for ($i = 1; $i <= $totalPages; $i++): ?> <li> <a href="?page=<?= $i ?>" class="<?= $i == $currentPage ? 'bg-blue-500 text-white' : 'bg-gray-200' ?> px-4 py-2 rounded-full block"> <?= $i ?> </a> </li> <?php endfor; ?> </ul> </nav>
交互设计:
动态生成分页按钮
当前页高亮显示
响应式按钮样式
示例5:模板继承系统
<!-- layout.php -->
<!DOCTYPE html>
<html>
<head>
<title><?= $title ?? '默认标题' ?></title>
<link href="/css/tailwind.css" rel="stylesheet">
</head>
<body>
<?php include 'header.php'; ?>
<main class="container mx-auto p-4">
<?= $content ?>
</main>
<?php include 'footer.php'; ?>
</body>
</html>
<!-- home.php -->
<?php
ob_start(); // 开启缓冲区
?>
<h1 class="text-2xl font-bold">欢迎页面</h1>
<p>当前时间:<?= date('Y-m-d H:i:s') ?></p>
<?php
$content = ob_get_clean();
$title = "首页";
include 'layout.php';
?>架构优势
实现HTML模板复用
内容区块化处理
逻辑与视图分离
混合编程最佳实践
安全处理
所有输出使用
htmlspecialchars()SQL查询使用预处理语句
代码组织
复杂逻辑封装到函数/类中
模板文件保持简洁
性能优化
避免在循环中执行数据库查询
使用OPcache加速
现代改进
可搭配Blade/Twig模板引擎
采用前端框架处理复杂交互