此圖像描述了我的問題,這是一個C代碼,它是以下代碼。SyntaxHighlighter將< >標記爲HTML標記
<pre class="brush: cpp">
#include <stdio.h>
int main() {
printf("Hello world<imnew>");
return 0;
}
</pre>
我得到的節點輸出如下。
爲什麼會出現這種情況?我該如何解決它?
此圖像描述了我的問題,這是一個C代碼,它是以下代碼。SyntaxHighlighter將< >標記爲HTML標記
<pre class="brush: cpp">
#include <stdio.h>
int main() {
printf("Hello world<imnew>");
return 0;
}
</pre>
我得到的節點輸出如下。
爲什麼會出現這種情況?我該如何解決它?
這是在「語法」高亮顯示器輸入過濾器後執行的「正確的錯誤並切斷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>
之前被關閉。語法突出顯示器應該在代碼中找到任何<
和>
以避免此類問題。
我有同樣的問題,雖然我沒有檢查「正確的錯誤和切斷HTML」過濾器。 但是我發現時間的解決方案通過轉義第一不是字符少<
<pre class="brush:cpp">
#include <iostream>
using namespace std;
void main()
{
cout << "Hello World!" << endl; cout << "Welcome to C++ Programming" << endl; }
</pre>
或者你可以生成custom filter逃脫比sembols大於和小於來 >
的<
除了@guneysus答案,將所有<更改爲& lt;也工作。
這可以作爲臨時解決方案。 :-) – zeekvfu