SyntaxHighlighter处理< >签名为HTML标签

时间:2012-12-14 03:15:59

标签: drupal-7 syntax-highlighting

此图片描述了我的问题,这是一个C代码,它是以下代码。

<pre class="brush: cpp">
#include <stdio.h>

int main() {
    printf("Hello world<imnew>");

    return 0;
}
</pre>

我得到的节点输出如下。

enter image description here

为什么会这样?我该如何解决?

3 个答案:

答案 0 :(得分:2)

我有同样的问题,虽然我没有检查“正确错误和切断HTML”过滤器。 但我发现了一个时间解决方案,首先将小于字符转义为&lt;

<pre class="brush:cpp">
 #include &lt;iostream> 

  using namespace std;
  void main()
   {
   cout << "Hello World!" << endl;   cout << "Welcome to C++ Programming" << endl; }
</pre>

或者你可以生成custom filter以逃避更大和更小的符号 &gt; &lt;

答案 1 :(得分:1)

在语法突出显示器输入过滤器之后执行“正确故障并切断HTML”输入过滤器是一个问题。从“正确错误和切断的HTML”输入过滤器执行的代码如下。

return filter_dom_serialize(filter_dom_load($text));

我尝试执行以下代码。

$text = <<<HTML
<pre class="brush: cpp">
#include <stdio.h>

int main() {
    printf("Hello world<imnew>");

    return 0;
}
</pre>
HTML;

print filter_dom_serialize(filter_dom_load($text));

我得到的输出如下:

<pre class="brush: cpp">
#include <stdio.h>

int main() {
    printf("Hello world<imnew>");

    return 0;
}
</imnew></stdio.h></pre>

原因正是<stdio.h><imnew>被解释为标记,并且在</pre>之前关闭。语法高亮显示应该转义代码中找到的任何<>以避免此类问题。

答案 2 :(得分:0)

除@guneysus回答外,更改全部&lt;到&amp; lt;也工作了。