2

この画像は私の問題を説明しています.これはCコードであり、次のコードです.

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

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

    return 0;
}
</pre>

ノード出力として得られるものは次のとおりです。

ここに画像の説明を入力

なぜこれが起こるのですか?どうすれば修正できますか?

4

3 に答える 3

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>です。構文ハイライターは、このような問題を回避するために、コード内にある<, をエスケープする必要があります。>

于 2012-12-18T15:38:57.660 に答える
0

@guneysus の回答に加えて、すべての < を < に変更します。も働いた。

于 2015-08-06T13:02:05.603 に答える