php代码需用包裹并在web服务器中解析,.html文件默认不执行php;短标签需开启配置;输出必须过滤以防xss,如用htmlspecialchars()和json_encode()。

PHP 代码必须用 <?php ?> 或短标签 = ?> 包裹,且服务器必须启用 PHP 解析(HTML 文件默认不执行 PHP)。
PHP 文件扩展名必须是 .php
浏览器直接打开 index.html 里的 <?php echo "hello"; ?> 不会执行,只会原样显示或被当成注释隐藏。只有 Web 服务器(如 Apache、Nginx)把请求交给 PHP 解析器后,代码才会运行。
- 把文件保存为
index.php,通过http://localhost/index.php访问 - 若坚持用
.html后缀,需在服务器配置中强制解析(例如 Apache 的AddType application/x-httpd-php .html),但不推荐——易混淆、有安全风险、部分托管环境不支持 - 短标签
= $name ?>需开启short_open_tag = On(PHP 8.0+ 默认关闭),建议统一用<?php echo $name; ?>
HTML 中嵌入 PHP 的三种常见位置
PHP 可以出现在 HTML 的任意文本上下文位置,但输出内容必须符合 HTML 结构逻辑,否则渲染错乱。
-
在 HTML 标签属性里:用引号包裹并注意转义,例如
<div id="user_<?php echo htmlspecialchars($id); ?>"> <li> <strong>在标签内容中</strong>:直接输出,但需过滤用户数据,避免 XSS,例如 <code><h1><?php echo htmlspecialchars($title); ?></h1> -
在 JavaScript 字符串中:不能直接写
<?php echo $js_value; ?>,要用json_encode(),例如var data = <?php echo json_encode($array); ?>; -
echo、print输出的内容会直接插入到当前位置的 HTML 流中;如果提前调用了header()或开启了输出缓冲(ob_start()),会影响后续echo是否可见 - 不能在
已输出后再用header("Location: ...")跳转,会报Warning: Cannot modify header information - 调试时可用
var_dump()查看变量,但务必确保它不在最终 HTML 内容区(比如放在注释里或开发环境专用区块),否则破坏 DOM 结构
混编时容易忽略的执行顺序和输出时机
PHP 是服务端执行,HTML 是客户端渲染——所有 <?php ?> 块在页面发送给浏览器前就已执行完毕,不存在“边加载 HTML 边执行 PHP”的情况。
立即学习“PHP免费学习笔记(深入)”;
<!DOCTYPE html>
<html>
<head>
<title>User Page</title>
</head>
<body>
<h1>Welcome, <?php echo htmlspecialchars($username ?? 'Guest'); ?></h1>
<script>
const userData = <?php echo json_encode(['id' => $user_id, 'role' => $role]); ?>;
</script>
</body>
</html>
最常出问题的地方不是语法,而是忘记对 PHP 输出做 htmlspecialchars() 或 json_encode() 处理,导致特殊字符破坏 HTML 或 JS 结构——尤其当变量来自 $_GET、$_POST 或数据库时。











