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

时间:2016-04-01 09:58:57

标签: php codeigniter syntaxhighlighter

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

我已从其网页链接下载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 ++文件。而是显示如下页面:

enter image description here

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

&#13;
&#13;
<!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>
&#13;
&#13;
&#13;

如何解决此问题?

1 个答案:

答案 0 :(得分:2)

这是由于html特殊字符'&lt;','&gt;'您可以使用PHP htmlspecialchars() Function将它们转换为&amp; lt,&amp; gt等。然后它将正确解析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>