2

这张图片描述了我的问题,这是一个 C 代码,如下所示。

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

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

    return 0;
}
</pre>

我得到的节点输出如下。

在此处输入图像描述

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

4

3 回答 3

2

我有同样的问题,虽然我没有检查“纠正错误并切断 HTML”过滤器。但我找到了一个临时解决方案,首先将小于字符转义为 <

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

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

或者您可以生成自定义过滤器 以将大于和小于符号转义 &gt;&lt;

于 2013-05-23T11:49:55.533 回答
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>。语法荧光笔应该转义 any <,并>在代码中找到以避免此类问题。

于 2012-12-18T15:38:57.660 回答
0

除了@guneysus 回答,将所有 < 更改为 < 也有效。

于 2015-08-06T13:02:05.603 回答