主要观点:PHP 8.4 引入新的[Dom\HTMLDocument 类],是基于老化的 XHTML 的 DOMDocument 的现代 HTML5 替代品,虽能正确读取和清理 HTML 并转化为嵌套对象,但不进行美化打印,需手动编写脚本实现。
关键信息:
- 新类创建方式及相关参数设置,如自动添加
<head>
和<body>
元素等。 - 确定不应美化打印的元素列表,如从[text-level semantics]选取的一些元素等。
- 可设置缩进字符为制表符,通过递归函数遍历 HTML 树进行美化打印,该函数会修改现有文档,先插入制表符节点再递归处理子节点,最后添加后缀节点。
- 美化打印后需调用
saveHtml()
序列化器输出,需手动添加<!doctype html>
。
重要细节: - 提供了设置不添加隐含元素的标志
LIBXML_HTML_NOIMPLIED
。 - 递归函数中判断节点内容是否应单独缩进及是否有子节点等情况的处理逻辑。
- 强调脚本存在未写正式测试、未测速度、可能有细微及灾难性错误,若有用可在 GitLab 参与或留言。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。