You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PHP Tidy让A、SPAN等内联元素像块元素一样缩进?

如何让PHP Tidy给内联元素添加块元素风格的空格分隔

嘿,这个问题我之前折腾过,PHP Tidy默认对内联元素(比如<a>、<span>)的处理确实和块元素不一样,但调整几个配置参数就能轻松实现你要的效果!

你的需求是把紧凑的内联元素结构:

<a href="#test"><span>Text</span></a>

转换成带有空格分隔的格式:

<a href="#test"> <span> Text </span> </a>

关键在于利用Tidy的add-space配置项,结合缩进相关参数,具体实现代码如下:

$input = '<a href="#test"><span>Text</span></a>';

// 配置Tidy参数
$tidyConfig = [
    'indent' => true,               // 开启缩进功能
    'indent-spaces' => 1,           // 设置缩进的空格数(匹配你的期望)
    'add-space' => 'a, span',       // 指定要添加空格的内联元素
    'wrap' => 0,                    // 禁止自动换行,保持内容在一行
    'preserve-entities' => true,    // 保留原始HTML实体
    'show-body-only' => true,       // 仅输出body内容(因为输入是片段)
    'clean' => false,               // 不清理额外内容
    'markup' => true                // 确保输出HTML格式
];

// 初始化并处理
$tidy = new tidy();
$tidy->parseString($input, $tidyConfig, 'utf8');
$tidy->cleanRepair();

// 输出结果(用htmlspecialchars转义方便查看)
echo htmlspecialchars($tidy);

关键配置项解释:

  • add-space: a, span:这是核心!告诉Tidy在指定的内联元素的开始标签后、结束标签前添加空格,让内容和标签之间有分隔。
  • indent: true + indent-spaces: 1:开启缩进并设置空格数,确保元素内部的空格符合你的要求。
  • wrap: 0:避免Tidy自动将内容换行,保持你想要的单行结构。
  • show-body-only: true:因为你的输入是HTML片段而非完整文档,这个参数会让Tidy只输出处理后的内容,不会自动补全<html>、<body>等标签。

测试这段代码后,就能得到你期望的输出格式啦。

内容的提问来源于stack exchange,提问作者Sergey L

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:51:14