
问题分析:DOMDocument 与非标准属性
php 的 domdocument 类是一个强大的工具,用于解析和操作 html 或 xml 文档。然而,它在处理非标准 html 属性时可能会遇到挑战,特别是那些包含特殊字符(如 @)的属性。这些属性在现代前端框架(如 vue.js 的 @click、@input 等事件绑定语法)中非常常见,但它们不符合标准的 html 或 xml 属性命名规范。
当 DOMDocument 加载包含 @ 字符的属性(例如 )时,由于 @ 在 XML/HTML 规范中通常用于表示命名空间前缀或被视为非法字符,DOMDocument 的底层解析器(libxml)可能会将其视为无效或无法识别的属性,并将其从 DOM 结构中移除。这会导致原始 HTML 结构在经过 DOMDocument 处理后丢失关键的前端绑定信息,从而破坏页面功能。
考虑以下示例代码,它展示了 DOMDocument 移除 @click 和 @autocomplete:change 属性的行为: