首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >美化PHP上存储在字符串中的HTML

美化PHP上存储在字符串中的HTML
EN

Stack Overflow用户
提问于 2016-01-01 13:55:49
回答 3查看 10.9K关注 0票数 6

变量$html中有一个字符串,其中包含缩小的HTMl代码,所有代码都在一行中,如下所示:

代码语言:javascript
运行
复制
$html = '<body><div><p>hello</p><div></body>';

如何美化/漂亮地打印HTML,使我的变量变成如下所示:

代码语言:javascript
运行
复制
 $html = '<body>
             <div>
               <p>hello</p>
             <div>
          </body>';

我知道整洁扩展是可能的,但是如果没有扩展,如何做到这一点。

编辑:请阅读问题。我不是在问如何通过一些外部网站美化HTML代码。我想知道如何在PHP中实现它,特别是针对string变量.

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-01-01 14:19:23

使用DomDocument,我们加载传递LIBXML_HTML_NOIMPLIED标志的html

这将阻止loadHTML方法添加额外的html包装器。

我们保存为XML以获得良好的缩进,同时传递$dom->documentElement参数以防止XML头。

代码语言:javascript
运行
复制
$html = '<body><div><p>hello</p><div></body>';

$dom = new DOMDocument();

$dom->preserveWhiteSpace = false;
$dom->loadHTML($html,LIBXML_HTML_NOIMPLIED);
$dom->formatOutput = true;


print $dom->saveXML($dom->documentElement);

这将输出

代码语言:javascript
运行
复制
<body>
  <div>
    <p>hello</p>
    <div/>
  </div>
</body>

请注意,HTML是为您修复的,因为我认为第二个div应该是一个结束标记。

如果我们将正确的HTML作为输入字符串传递,则输出将按照您的要求进行。

代码语言:javascript
运行
复制
$html = '<body><div><p>hello</p></div></body>';

<body>
  <div>
    <p>hello</p>
  </div>
</body>
票数 14
EN

Stack Overflow用户

发布于 2020-03-11 06:22:11

我使用过DOMDocument,但它似乎对破坏的html和html错误非常敏感。

无论如何,DOMDocument需要dom extension,所以我使用了整齐的php扩展,因为它对我来说非常完美--它还修复了html错误并美化了html。

使用示例中的代码:

代码语言:javascript
运行
复制
$config = array(
       'indent'         => true,
       'output-xhtml'   => true,
       'wrap'           => 200);

 // Tidy
$tidy = new \tidy;
$tidy->parseString($html, $config, 'utf8');
$tidy->cleanRepair();

// Output
echo $tidy;
票数 4
EN

Stack Overflow用户

发布于 2016-01-01 14:03:33

虽然我不知道有什么预先构建的东西可以做到这一点(大多数解析器提供了缩小HTML的功能,而不是美化它),但您自己应该不难做到:

  1. 解析HTML。DOMDocument可能是个好主意。
  2. 翻阅文件。对于每个元素..。
    1. 输出开始标记--您也需要遍历属性。
    2. 如果它不包含子元素(但可能包含子文本),则输出它的textContent 否则,递归到元素中,输出每个子节点,无论是文本还是元素。根据递归级别的数量适当地缩进。
    3. 输出结束标记。

还有..。就这样。应该不会太难:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34556727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档