PHP 8.6 不存在,当前最新版为 PHP 8.5;Tidy 扩展配置方式在 PHP 7.4 至 8.5 中完全一致,需启用扩展、安装系统依赖,再通过 tidy_repair_string() 或 tidy 对象进行 HTML 清理与修复。

PHP 8.6 目前并不存在——截至2026年8月,PHP官方最新稳定版本是 PHP 8.3(2023年11月发布),后续为 PHP 8.4(2024年11月)、PHP 8.5(2025年11月)。PHP 官方从未发布过 PHP 8.6,也没有规划该版本。因此,“PHP 8.6 如何配置 Tidy”这一前提不成立。
但如果你实际使用的是 PHP 8.4 或 8.5(当前主流新版),Tidy 扩展的配置方式与 PHP 7.4–8.3 完全一致,完全兼容且无变化。下面直接按真实可用的最新 PHP 版本(如 8.4/8.5)说明如何正确配置 Tidy 清理 HTML 代码:
确认 Tidy 扩展已启用
Tidy 不是默认内置模块,需手动启用:
- 检查是否加载:
var_dump(extension_loaded('tidy')); // 应返回 true - 若为
false,需在php.ini中取消注释或添加:extension=tidy
- Linux 系统还需确保系统级
libtidy已安装(如 Ubuntu/Debian):sudo apt install libtidy-dev
CentOS/RHEL:
立即学习“PHP免费学习笔记(深入)”;
sudo yum install libtidy-devel # 或 dnf install libtidy-devel
基础配置:用 tidy_parse_string() 清理并格式化
最常用、轻量、无需实例化对象的方式:
$html = '<div><p>Hello<i>world</div>'; // 错误闭合、缺失 </i>
$config = [
'indent' => true,
'output-xhtml' => true,
'wrap' => 200,
'show-body-only' => false, // 设为 true 可只输出 <body> 内容(不含 html/head)
'clean' => true,
'fix-bad-comments' => true,
'drop-empty-paras' => true,
];
$cleaned = tidy_repair_string($html, $config, 'utf8');
echo $cleaned;✅ 输出会自动修复标签嵌套、补全闭合、转义非法字符,并按 XHTML 标准缩进。
进阶控制:使用 tidy 对象管理解析与节点操作
适合需要检查错误、提取 head/body 或干预 DOM 结构的场景:
$tidy = new tidy();
$tidy->parseString($html, $config, 'utf8');
$tidy->cleanRepair();
// 查看修复后整体 HTML
echo $tidy->html()->value;
// 提取仅 body 部分
$bodyNode = $tidy->body();
if ($bodyNode) {
echo $bodyNode->value; // 不含 <html><head>,只有 <body>...</body>
}
// 获取错误数量(判断是否严重损坏)
if ($tidy->errorBuffer && tidy_error_count($tidy)) {
echo "Errors: " . tidy_error_count($tidy);
}⚠️ 注意:
$tidy->html()返回的是tidyNode对象,.value才是字符串内容;直接echo $tidy也会输出修复后的 HTML,但不可控。
全局自动清理(谨慎使用)
PHP 支持通过 php.ini 启用输出缓冲级自动修复:
tidy.clean_output = On tidy.default_config = "/etc/php/tidy.conf" ; 可选:指向外部配置文件
⚠️ 强烈不建议开启 tidy.clean_output,除非你确定所有响应都是标准 HTML。它会对 echo、print 的每一段输出都强制修复,可能破坏 JSON、XML、二进制流或 JS/CSS 内联内容,导致页面异常或安全风险。
不复杂但容易忽略。只要扩展启用、配置合理、避免全局自动清理,Tidy 就能稳定帮你把脏 HTML 变干净。



















