如何修复 SyntaxHighlighter 以在不添加额外字符的情况下显示 cpp 文件?

How to fix SyntaxHighlighter to show cpp file without adding extra characters?

为了以正确的格式显示 C/C++ 代码,我发现 SyntaxHighlighter 这是一种基于 javascript 的多种语言的语法格式化程序。

我已经从其页面 link 下载了 the sample 并编辑了 index.html 文件以格式化以下代码:

#include<bits/stdc++.h>
using namespace std;

int main()
{
    int a,b;
    cin>>a>>b;
    cout<<a+b<<endl;
    return 0;
}

</pre>

</html>

但是它没有正确显示 C++ 文件。而是显示如下页面:

在这里你可以测试我的代码片段:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
 <title>Hello SyntaxHighlighter</title>
 <script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js"></script>
 <script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCpp.js"></script>
 <link type="text/css" rel="stylesheet" href="http://alexgorbatchev.com/pub/sh/current/styles/shCoreDefault.css"/>
 <script type="text/javascript">SyntaxHighlighter.all();</script>
</head>


<body style="background: white; font-family: Helvetica">

<h1>Hello SyntaxHighlighter</h1>
<pre class="brush: cpp;">
#include<bits/stdc++.h>
using namespace std;

int main()
{
    int a,b;
    cin>>a>>b;
    cout<<a+b<<endl;
    return 0;
}

</pre>

</html>

如何解决这个问题?

这是由于 html 个特殊字符 '<', '>' 等。您可以使用 PHP htmlspecialchars() Function 将它们转换为 <,> 等。然后它将正确解析 html 特殊字符.

<pre class="brush: cpp;">
<?php
echo htmlspecialchars('
#include<bits/stdc++.h>
using namespace std;

int main()
{
    int a,b;
    cin>>a>>b;
    cout<<a+b<<endl;
    return 0;
}')?>

</pre>