返回列表 回复 发帖

[转帖]扩展的代码高亮显示标签

[UploadFile=23_123.rar.info][这个帖子最后由cnangel在 2004/01/16 09:39am 第 1 次编辑]

扩展的代码高亮显示标签(针对lbxp)


一、包含文件

readme.txt说明文件
c.datc/c++ 的关键字文件,放于 data 目录下
c#.datc# 的关键字文件,放于 data 目录下
java.datjava 的关键字文件,放于 data 目录下
vb.datVisual Basic 的关键字文件,放于 data 目录下
perl.datPerl 的关键字文件,放于 data 目录下,XP 版已提供


二、简介

   XP 版的论坛,可以高亮显示 Perl 的代码,而 MX 版为了减少资源消耗去
掉了这一功能。由于一些人的需要,我对高亮显示代码标签进行了扩展,使其不
但可以高亮显示 Perl 的代码,还可以高亮显示 C、C#、JAVA、Visual Basic
的代码,而且只要你知道相应语言的关键字,就可以自行扩展,来高亮显示更多
语言的代码。
   我所提供的几个关键字文件,是我从 UltraEdit 里偷出来的,若发现有什
么问题可自行修改相应的关键字文件。


三、程序修改方法

1、修改 code.cgi 文件

用文本编辑程序打开 code.cgi 。找到
while ($post =~/\[code\](.+?)\[\/code\]/is){
   my $post1 = $1;
   $post1=&unHTML($1);
   $post1=~s /\<br\>/\n/sg;
   $post1=~s /\<p\>/\n\n/sg;
   $post1 =~ s/\&/\&/g;
   $post1=~s /\<br\>/<br>/sg;
   $post =~ s/\[code\](.+?)\[\/code\]/<blockquote><font face=$font>代码:<\/font><hr><font face=$font><pre>$post1<\/pre><\/font><hr><\/blockquote>/is;
}
以上为 MX 版的代码,XP 版的有所不同。
替换为
while ($post =~/\[code(=([\w\+\#]+))?\](.+?)\[\/code\]/is){
   my $language=lc($2);
   $language="c" if($language eq "c++");
   my $post1=&unHTML($3);
   my $syntaxfile="${lbdir}data/$language.dat";
   if (-e $syntaxfile) {
open(SYNTAX,"<$syntaxfile");
my @perlcodes = <SYNTAX>;
close(SYNTAX);
chomp(@perlcodes);
my @bluecodes = split(/ /,$perlcodes[0]);
foreach(@bluecodes) {
   $post1 =~ s/(^|[\s\x7E\x21\x40\x24\x25\x5E\x26\x2A\x28\x29\x2B\x3D\x7C\x2F\x5C\x7B\x7D\x5B\x5D\x3A\x3B\x22\x27\x3C\x3E\x2C\x2E\x3F])($_)([\s\x7E\x21\x40\x24\x25\x5E\x26\x2A\x28\x29\x2B\x3D\x7C\x2F\x5C\x7B\x7D\x5B\x5D\x3A\x3B\x22\x27\x3C\x3E\x2C\x2E\x3F]|$)/$1<font color=0000FF>$2<\/font>$3/isg;
}
@bluecodes = ();
my @redcodes = split(/ /,$perlcodes[1]);
foreach(@redcodes) {
   $post1 =~ s/(^|[\s\x7E\x21\x40\x24\x25\x5E\x26\x2A\x28\x29\x2B\x3D\x7C\x2F\x5C\x7B\x7D\x5B\x5D\x3A\x3B\x22\x27\x3C\x3E\x2C\x2E\x3F])($_)([\s\x7E\x21\x40\x24\x25\x5E\x26\x2A\x28\x29\x2B\x3D\x7C\x2F\x5C\x7B\x7D\x5B\x5D\x3A\x3B\x22\x27\x3C\x3E\x2C\x2E\x3F]|$)/$1<font color=FF0000>$2<\/font>$3/isg;
}
@redcodes = ();
my @orangecodes = split(/ /,$perlcodes[2]);
foreach(@orangecodes) {
   $post1 =~ s/(^|[\s\x7E\x21\x40\x24\x25\x5E\x26\x2A\x28\x29\x2B\x3D\x7C\x2F\x5C\x7B\x7D\x5B\x5D\x3A\x3B\x22\x27\x3C\x3E\x2C\x2E\x3F])($_)([\s\x7E\x21\x40\x24\x25\x5E\x26\x2A\x28\x29\x2B\x3D\x7C\x2F\x5C\x7B\x7D\x5B\x5D\x3A\x3B\x22\x27\x3C\x3E\x2C\x2E\x3F]|$)/$1<font color=FF8000>$2<\/font>$3/isg;
}
@orangecodes = ();
my @greencodes = split(/ /,$perlcodes[3]);
foreach(@greencodes) {
   $post1 =~ s/(^|[\s\x7E\x21\x40\x24\x25\x5E\x26\x2A\x28\x29\x2B\x3D\x7C\x2F\x5C\x7B\x7D\x5B\x5D\x3A\x3B\x22\x27\x3C\x3E\x2C\x2E\x3F])($_)([\s\x7E\x21\x40\x24\x25\x5E\x26\x2A\x28\x29\x2B\x3D\x7C\x2F\x5C\x7B\x7D\x5B\x5D\x3A\x3B\x22\x27\x3C\x3E\x2C\x2E\x3F]|$)/$1<font color=008000>$2<\/font>$3/isg;
}
@greencodes = ();
@perlcodes = ();
   }
   $post1=~s /\<br\>/\n/sg;
   $post1=~s /\<p\>/\n\n/sg;
   $post1 =~ s/\&/\&/g;
   $post1 =~ s/&<font color=FF8000>gt<\/font>;/>/isg;
   $post1 =~ s/&<font color=FF8000>lt<\/font>;/</isg;
   $post1=~s /\<br\>/<br>/sg;

   $post =~ s/\[code(=([\w\+\#]+))?\](.+?)\[\/code\]/<blockquote><font face=$font>$2 代码:<\/font><hr><font face=$font><pre>$post1<\/pre><\/font><hr><\/blockquote>/is;
}

2、将几个 .dat 的关键字文件放到 cgi-bin 下的 data 目录里,若为 UNIX 系
统,改属性为 666 。


四、标签使用说明

1、仅使用 code 标签,则不高亮显示代码。
如:[code]...(代码)...[/code]

2、使用标签并指定语言。
如:[code=c]...(代码)...[/code]
为高亮显示 C 的代码,等号后面为语言名称,语言名称一定要与保存相应的关
键字的文件名相同才行。
如果这种语言的关键字文件存在,则根据相应语言的关键字高亮显示代码。
如果这种语言的关键字文件不存在,则无法高亮显示其代码,仅普通显示。


五、扩展关键字文件

   关键字文件是以相应语言名称为文件名,dat 为扩展名的文本文件,放于
cgi-bin 的 data 目录下。文件的第一行为兰色显示的关键字,第二行为红色显
示的关键字,第三行为橙色显示的关键字,第四行为绿色显示的关键字,后面的
则不管了。关键字之间以一个空格分开。
   你可以建立新的关键字文件,以高亮显示新的语言,也可以对以有的关键字
文件进行修改。注意,如果关键字的文件过大,可能会严重占用系统资源。



#########################
#
# 修改提供
# 雷傲论坛河北代理
#一窍不通
#
# QQ:125720970
# EMail:sdcrab@sina.com
#
#2003.7.1
#########################

                     我是一个呼吸着现在的空气而生活在过去的人
               这样的注定孤独,孤独的身处闹市却犹如置身于荒漠
                                     我已习惯了孤独,爱上孤独
                                 他让我看清了自我,还原了自我
                             让我再静静的沉思中得到快乐和满足
                                   再孤独的世界里我一遍又一遍
                                   不厌其烦的改写着自己的过去
                                             延伸到现在与未来
                                       然而那只是泡沫般的美梦
                                 产生的时刻又伴随着破灭的到来
                         在灰飞烟灭的瞬间我看到的是过程的美丽
                                      而不是结果的悲哀。。。

[转帖]扩展的代码高亮显示标签

[UploadFile=23_123_1.rar.info]这是网友提供的扩展的代码高亮显示标签综合
提供学习之用

                     我是一个呼吸着现在的空气而生活在过去的人
               这样的注定孤独,孤独的身处闹市却犹如置身于荒漠
                                     我已习惯了孤独,爱上孤独
                                 他让我看清了自我,还原了自我
                             让我再静静的沉思中得到快乐和满足
                                   再孤独的世界里我一遍又一遍
                                   不厌其烦的改写着自己的过去
                                             延伸到现在与未来
                                       然而那只是泡沫般的美梦
                                 产生的时刻又伴随着破灭的到来
                         在灰飞烟灭的瞬间我看到的是过程的美丽
                                      而不是结果的悲哀。。。
返回列表