2012-12-14 111 views
2

此圖像描述了我的問題,這是一個C代碼,它是以下代碼。SyntaxHighlighter將< >標記爲HTML標記

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

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

    return 0; 
} 
</pre> 

我得到的節點輸出如下。

enter image description here

爲什麼會出現這種情況?我該如何解決它?

回答

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

我有同樣的問題,雖然我沒有檢查「正確的錯誤和切斷HTML」過濾器。 但是我發現時間的解決方案通過轉義第一不是字符少<

<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逃脫比sembols大於和小於來 &gt;&lt;

+0

這可以作爲臨時解決方案。 :-) – zeekvfu

0

除了@guneysus答案,將所有<更改爲& lt;也工作。