PHP与HTML混合编程是指将PHP脚本代码直接嵌入HTML文档中,通过服务器端执行PHP代码来动态生成HTML内容的开发方式。以下是核心要点和30个实用示例:
一、基础概念
执行原理
PHP代码在服务器端执行,生成纯HTML发送到浏览器。例如:
<!-- 静态HTML -->
<h1>标题</h1>
<!-- 动态内容 -->
<h1><?php echo date('Y-m-d'); ?></h1>基本语法
<?php ... ?>标准标签<?= $var ?>短标签(等价于<?php echo $var ?>)
二、30个典型示例
基础输出
变量输出
<p>欢迎,<?= htmlspecialchars($user) ?></p>
数学运算
<p>总计:<?= $price * $quantity ?>元</p>
条件控制
简单条件
<?php if ($score > 60): ?> <span class="pass">及格</span> <?php else: ?> <span class="fail">不及格</span> <?php endif; ?>
多条件判断
<?php if ($age < 13) $group = '儿童'; elseif ($age < 18) $group = '青少年'; else $group = '成人'; ?> <div>分组:<?= $group ?></div>
循环结构
数字循环
<?php for ($i = 1; $i <= 5; $i++): ?> <button>选项<?= $i ?></button> <?php endfor; ?>
关联数组遍历
<ul> <?php foreach ($person as $key => $value): ?> <li><?= $key ?>: <?= $value ?></li> <?php endforeach; ?> </ul>
表单处理
表单回显
<input type="text" name="email" value="<?= $_POST['email'] ?? '' ?>">
单选按钮状态保持
<input type="radio" name="gender" value="male" <?= ($gender ?? '') === 'male' ? 'checked' : '' ?>>
模板组织
头部引入
<!DOCTYPE html> <html> <head> <?php include 'head.php' ?> </head>
组件函数
<?php function alert($msg, $type = 'info') { ?>
<div class="alert-<?= $type ?>"><?= $msg ?></div>
<?php } ?>
<?php alert('操作成功', 'success') ?>数据库交互
动态下拉菜单
<select name="category">
<?php foreach ($db->query('SELECT * FROM categories') as $row): ?>
<option value="<?= $row['id'] ?>"><?= $row['name'] ?></option>
<?php endforeach; ?>
</select>分页导航
<div class="pagination"> <?php for ($i = 1; $i <= $totalPages; $i++): ?> <a href="?page=<?= $i ?>" class="<?= $currentPage == $i ? 'active' : '' ?>"> <?= $i ?> </a> <?php endfor; ?> </div>
安全实践
XSS防护
<script> var userData = <?= json_encode($data, JSON_HEX_TAG) ?>; </script>
URL编码
<a href="search.php?q=<?= urlencode($query) ?>"> 搜索 </a>
高级技巧
动态CSS
<style>
.header {
background: <?= $themeColor ?>;
}
</style>多语言支持
<p><?= $lang[$currentLang]['welcome'] ?></p>
文件操作
图片画廊
<div class="gallery">
<?php foreach (glob('images/*.jpg') as $file): ?>
<img src="<?= $file ?>" alt="画廊图片">
<?php endforeach; ?>
</div>会话控制
登录状态显示
<div class="user-info"> <?php if (isset($_SESSION['user'])): ?> 欢迎,<?= $_SESSION['user'] ?> <?php else: ?> <a href="/login">请登录</a> <?php endif; ?> </div>
错误处理
异常捕获
<?php try { ?>
<div><?= riskyOperation() ?></div>
<?php } catch (Exception $e) { ?>
<div class="error">操作失败</div>
<?php } ?>性能优化
输出缓冲
<?php ob_start(); ?> <!-- 复杂HTML内容 --> <?php $html = ob_get_clean(); ?>
现代集成
与Vue.js混合
<div id="app"> <user-profile :data='<?= json_encode($user) ?>'></user-profile> </div>
实用函数
价格格式化
<p>价格:<?= number_format($price, 2) ?>元</p>
时间显示
<time><?= date('Y年m月d日', $timestamp) ?></time>特殊场景
动态JSON输出
<?php
header('Content-Type: application/json');
echo json_encode($data);
exit;
?>条件加载JS
<?php if ($needsChart): ?> <script src="chart.js"></script> <?php endif; ?>
模板继承
基础模板
<!-- layout.php --> <body> <?php include 'header.php' ?> <?= $content ?> <?php include 'footer.php' ?> </body>
页面继承
<?php ob_start(); ?> <!-- 页面内容 --> <?php $content = ob_get_clean(); ?> <?php include 'layout.php' ?>
组件库
卡片组件
<?php function card($title, $content) { ?>
<div class="card">
<h3><?= $title ?></h3>
<p><?= $content ?></p>
</div>
<?php } ?>调试技巧
调试输出
<pre><?php print_r($data) ?></pre>
完整示例
用户列表页
<!DOCTYPE html>
<html>
<head>
<title>用户管理</title>
<style>
.admin { background: #ffecec; }
</style>
</head>
<body>
<h1>用户列表</h1>
<table>
<?php foreach ($users as $user): ?>
<tr class="<?= $user['is_admin'] ? 'admin' : '' ?>">
<td><?= htmlspecialchars($user['name']) ?></td>
<td><?= $user['email'] ?></td>
</tr>
<?php endforeach; ?>
</table>
<p>共 <?= count($users) ?> 位用户</p>
</body>
</html>三、最佳实践
分离原则
业务逻辑与显示逻辑分离
复杂逻辑应放在PHP文件开头或单独类中
安全规范
所有输出必须过滤(
htmlspecialchars())数据库查询使用预处理语句
性能优化
避免在循环中执行SQL查询
使用OPcache加速
可维护性
超过10行的PHP逻辑应提取为函数
使用模板引擎(如Twig)替代复杂混合
这种混合编程模式兼具灵活性和高效性,适合快速开发中小型Web应用。对于大型项目,建议采用MVC架构进行更规范的分离。