PHP原生模板渲染可用include+extract实现,配合ob_start()捕获输出,需手动htmlspecialchars转义防XSS,推荐绝对路径引用模板并避免过早抽象。
include + extract() 就能实现最简模板渲染PHP 原生没有内置模板引擎,但靠语言特性可以几行代码搭出可用的模板逻辑。核心是:把数据数组导入作用域,再 include 一个纯 HTML/PHP 混写文件。不依赖 Composer、不引入第三方库,适合小项目或快速原型。
常见错误是直接 echo 拼接 HTML —— 难维护、易 XSS、无变量隔离;或者误用 eval() 执行模板字符串 —— 安全风险极高,绝对禁止。
extract($data, EXTR_SKIP) 把数组键转为变量,EXTR_SKIP 防止覆盖已有变量(比如 $data 自身)user.tpl.php)里直接写 = htmlspecialchars($name) ?>
,注意手动转义extract() 只影响当前作用域ob_start() + include?它其实更稳妥单纯 include 会立刻输出内容,无法捕获、修改或缓存。真实场景中你往往需要「先渲染、再处理」—— 比如加 HTTP 头、套 layout、做 SEO 替换。这时必须用输出缓冲。
function render($template, $data = []) {
extract($data, EXTR_SKIP);
ob_start();
include $template;
return ob_get_clean();
}
// 使用
$html = render('post.tpl.php', ['title' => 'Hello', 'content' => ' 上海张梓塔肯商务服务有限责任公司 版权所有 沪ICP备2024074955号