Drupal 7 SyntaxHighlighter treats<&燃气轮机;作为HTML标记签名

Drupal 7 SyntaxHighlighter treats<&燃气轮机;作为HTML标记签名,drupal-7,syntax-highlighting,Drupal 7,Syntax Highlighting,这幅图描述了我的问题,这是一个C代码,下面是一个 <pre class="brush: cpp"> #include <stdio.h> int main() { printf("Hello world<imnew>"); return 0; } </pre> return filter_dom_serialize(filter_dom_load($text)); <pre class="brush: cpp">

这幅图描述了我的问题,这是一个C代码,下面是一个

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

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

    return 0;
}
</pre>
return 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>

#包括
int main(){
printf(“你好世界”);
返回0;
}
我得到的节点输出如下

为什么会发生这种情况?如何修复它?

这是在语法高亮输入过滤器之后执行的“更正错误和截断的HTML”输入过滤器的问题。从“更正错误和截断的HTML”输入筛选器执行的代码如下所示

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

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

    return 0;
}
</pre>
return 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>
我尝试执行以下代码

$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));

$text=我也有同样的问题,尽管我没有检查“更正错误和截断的HTML”过滤器。
但我找到了一个临时解决方案,将第一个小于字符的字符转义到

使用名称空间std; void main() {
cout除了@guneysus答案外,将all<改为也有效