PHP代码加亮工具——GeSHi 的安装和使用

红薯 发布于 2010/09/16 23:34
阅读 1K+
收藏 8

代码加亮工具GeSHi的安装轻而易举,即便对PHP新手也一样,不需要什么技巧^_^

GeSHi需要如下环境:

PHP 4.1.0以上
作者在 4.3.X 环境下进行了测试。同时,大量的应用表明GeSHi的稳定性很好,适合各个PHP版本中的运行。
大约需要700K字节的磁盘空间
其中核心程序很小,不到100K,其余的主要是大量的语言支持文件(超过50中)。如果你希望节省空间,可以不上传 docs/ 及 contrib/ 目录,而且可以不上传用不到的语言支持文件。

http://qbnz.com/highlighter/downloads.php 可以找到最新版本。 这里有.zip、 .tar.gz 、 .tar.bz2 格式的文件。windows用户用WinRAR就能轻松解包。

GeSHi仅仅是一个PHP class,以及相关语言支持文件。如果熟悉PHP,你就会猜到安装是何等的容易:简单的把geshi.php及语言文件的子目录拷贝到include path所包含的某个地方,这就可以了。请记好这个路径。

如果你不懂 include path ,你可以随便把它们找个地方放下。例如,加入你的网站文件是 http://mysite.com/myfolder ,那么把 GeSHi 与网站放在一起,此时就有:

http://mysite.com/myfolder/geshi/[language files]
http://mysite.com/myfolder/geshi.php

或者你把它们放进子目录,例如:

http://mysite.com/myfolder/includes/geshi/[language files]
http://mysite.com/myfolder/includes/geshi.php

注意:GeSHi在运行时仅需要 geshi/ 子目录。 contrib/ 和 docs/ 并不起作用。

GeSHi的使用非常简单,这里是一个简单的例子:

// 关键行:引用 GeSHi 库,以引入GeSHi class
include_once('geshi.php');

// 把一段需要加亮的源代码存入字符串
$source = '$foo = 45;
for ( $i = 1; $i < $foo; $i++ )
{
  echo "$foo<br />\n";
  --$foo;
}';

// 指定源代码所属语言,以及语言文件的路径
$language = 'php';
$path = 'geshi/';

// 关键行:创建 GeSHi 对象,保存用于加亮的源代码和语言信息
$geshi = new GeSHi($source, $language);

// 关键行:输出结果!
echo $geshi->parse_code();
如你所见,简单方式的 GeSHi 使用实在很容易。创建一个新的 GeSHi 对象并获取结果就行了!

从 1.0.2 版本开始,GeSHi中包含一个名为 geshi_highlight 的函数。其作用与php函数 highlight_string 完全相同 - 你所要做的就是:传入加亮代码的语种、语言文件的路径,以及要加亮的源代码。 这里是一些例子:

// 例一:简单输出(echo)加亮后的代码
geshi_highlight($source, 'php', $path);

// 例二:保存加亮结果,以备以后使用
$code = geshi_highlight($source, 'java', $path, true)

// 例三:检查是否在处理代码时发生了错误
ob_start();
$result = geshi_highlight($source, 'perl', $path);
$code = ob_get_contents();
ob_end_clean();
if (!$result )
{
        // 加亮处理发生了错误...
}
else
{
        // 一切正常:)
}
然而,以上这些仅仅是简单的例子,并没有用到 GeSHi 的高级特性。

 

加载中
0
钛元素
钛元素

非常棒,我喜欢这个

0
xyz555
xyz555

如果出于减轻服务器负担将这工作交由客户端做会更好,也就是使用js会更好。而且这东西同一网页每打开一次服务器都要重复的忙一下,浪费服务器资源。

0
小薇
小薇

引用来自“xyz555”的答案

如果出于减轻服务器负担将这工作交由客户端做会更好,也就是使用js会更好。而且这东西同一网页每打开一次服务器都要重复的忙一下,浪费服务器资源。

这个是在后台做高亮?那太不可取了~~~
返回顶部
顶部