1

我正在使用 CKEditor 的 SyntaxHighlighter 插件将代码插入到我的页面中。该插件使用 <pre> 标签来包含代码,同时使用“画笔”类来定义编程语言。我的问题是,在提交页面时,HTML Purifier 会从 pre 标记中剥离 class 属性,这有效地防止了语法突出显示的发生。

源代码来自:

<pre class="brush:php;">
   <?php echo '<p>Hello World</p>'; ?>
</pre>

至:

<pre>
   <?php echo '<p>Hello World</p>'; ?>
</pre>

我希望有一些神奇的设置可以阻止 HTML Purifier 这样做。

4

1 回答 1

1

原因是根据 HTML4 规范,brush:php 不是一个有效的类名。我想您可以编写自己的类名验证器并使用http://htmlpurifier.org/docs/enduser-customize.html覆盖内置

但更好的解决方案可能是在运行 HTML Purifier 之前运行语法突出显示!

于 2014-05-02T21:36:14.450 回答