htmlpurifier - 如何转义自关闭标签?

htmlpurifier - How to escape self closing tags?

提问人:Omar Elewa 提问时间:4/17/2022 最后编辑:Omar Elewa 更新时间:4/25/2022 访问量:247

问:

我注意到,当将 html 字符串传递给 htmlpurifier 时,它会通过打开和关闭标签或仅打开标签替换所有自关闭标签

净化前

<p>
  <math xmlns="http://www.w3.org/1998/Math/MathML">
    <mmultiscripts>
       <mi>y</mi>
       <mprescripts/>
       <none/>
       <mn>2</mn>
    </mmultiscripts>
   </math>
</p>

净化后

<p>
   <math xmlns="http://www.w3.org/1998/Math/MathML">
     <mmultiscripts>
       <mi>y</mi>
       <mprescripts></mprescripts>
       <none>
         <mn>2</mn>
      </mmultiscripts>
    </math>
 </p>

如您所见,标签在被标签净化后被替换,这破坏了 html 的渲染!<none/><none>

在我的配置文件中添加什么以转义自关闭标记?这个列表中有什么速记可以解决问题吗?

请注意,我是通过 mews/purifier 包使用 htmlpurifier,这是一个专门用于 laravel 集成的包。

php htmlpurifier

评论

1赞 Quentin 4/17/2022
stackoverflow.com/questions/70293773/......— 看起来 MathML 是 HTML Purifier 的禁忌。
1赞 NoDataFound 4/17/2022
顺便说一句<none /> 是 XML,而不是 HTML。如果 <none /> 为空元素,则呈现“不”错误。
0赞 Jacob Mulquin 4/17/2022
你能提供你的配置吗?默认的 htmlpurifier 配置会删除除 和 content 之外的所有内容。<p></p>y2
0赞 Omar Elewa 4/17/2022
当然,我现在会编辑这个问题。
1赞 Quentin 4/17/2022
@NoDataFound — html.spec.whatwg.org/multipage/... — HTML中嵌入的MathML应该使用自闭合标签语法,就好像它是独立的XML一样。

答:

1赞 pinkgothic 4/18/2022 #1

我相信标签的规则可能指出了结束标签消失的原因。HTML 标记,如 、 和 ,隐式自关闭。但是,您可以将元素与允许的子规则一起使用,该规则为空正则表达式。Empty<none>Empty<br><hr><img>InlineCustom

“打开和关闭标签”场景对您来说是个问题吗?我对 MathML 不够熟悉,不知道这是否不仅仅是一个表面上的改变;如果该代码的语义行为保持不变,我不会担心。我目前不知道如何解决这个问题。