此图片描述了我的问题,这是一个C代码,它是以下代码。
<pre class="brush: cpp">
#include <stdio.h>
int main() {
printf("Hello world<imnew>");
return 0;
}
</pre>
我得到的节点输出如下。
为什么会这样?我该如何解决?
答案 0 :(得分:2)
我有同样的问题,虽然我没有检查“正确错误和切断HTML”过滤器。 但我发现了一个时间解决方案,首先将小于字符转义为&lt;
<pre class="brush:cpp">
#include <iostream>
using namespace std;
void main()
{
cout << "Hello World!" << endl; cout << "Welcome to C++ Programming" << endl; }
</pre>
或者你可以生成custom filter以逃避更大和更小的符号
>
<
答案 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;也工作了。