源码网,源码论坛,源码之家,商业源码,游戏源码下载,discuz插件,棋牌源码下载,精品源码论坛

 找回密码
 立即注册
查看: 264|回复: 22

[PHP编程] Discuz5.5.0代码高亮显示+运行代码框合成插件 下载第1/4页

[复制链接]

7万

主题

861

回帖

32万

积分

论坛元老

Rank: 8Rank: 8

积分
329525
发表于 2007-7-17 00:00:00 | 显示全部楼层 |阅读模式
主要功能:
1.几乎支持所有程序代码的高亮显示,包括以下语言:Actionscript、ADA、Apache Log、AppleScript、ASM、ASP、AutoIT、Backus-Naur form、Bash、BlitzBasic、C、C for Macs、C#、C++、CAD DCL、CadLisp、CFDG、CFDG、ColdFusion、CSS、Delphi、DIV、DOS、Eiffel、Fortran、Fortran、FreeBasic、GML、Groovy、HTML、Inno、IO、Java、Java 5、Javascript、LaTeX、Lisp、Lua、Microprocessor ASM、mIRC、MySQL、NSIS、Objective C、OCaml、OpenOffice BASIC、Oracle 8 SQL、Pascal、Perl、PHP、PL/SQL、Python、Q(uick)BASIC、robots.txt、Ruby、SAS、Scheme、SDLBasic、Smalltalk、Smarty、SQL、T-SQL、TCL、thinBasic、Uno IDL、VB.NET、Visual BASIC、Visual Fox Pro、Winbatch、X++、XML、Z80 ASM等等。
2.代码运行框,含复制代码、运行代码、另存代码三项功能。

使用方法:
1.如果你想高亮一种语言代码,可以使用下面的格式:
[languge=html]这里是HTML代码[/language]
[languge=xml]这里是XML代码[/language]
[languge=css]这里是CSS代码[/language]
[languge=javascript]这里是Javascript代码[/language]
[languge=asp]这里是ASP代码[/language]
[languge=php]这里是PHP代码[/language]
[languge=java]这里是Java代码[/language]
[languge=cpp]这里是C++代码[/language]
[languge=csharp]这里是C#代码[/language]
[languge=mysql]这里是Mysql代码[/language]
2.如果你只是想一段代码可以运行,则可以使用默认的复制代码 代码如下:格式。

安装方法:
1.下载解压压缩包,如果你使用的是默认模板,并且以前没有修改过以下几个文件:
/viewthread.php
/include/discuzcode.func.php
/include/global.func.php
/include/javascript/common.js
那么,您可以直接将其解压缩后的文件上传到网站根目录即可,其他模板可以参照后面的修改方法进行修改。
2.如果您以前修改过其中的一些或所有文件,你可以按照以下的说明,修改你以前修改过的文件,没有修改过的就直接上传覆盖就可以了:
(1)/viewthread.php
找到:
[code]
$post['message'] = discuzcode($post['message'], $post['smileyoff'], $post['bbcodeoff'], $post['htmlon'], $forum['allowsmilies'], $forum['allowbbcode'], ($forum['allowimgcode'] && $showimages ? 1 : 0), $forum['allowhtml'], ($forum['jammer'] && $post['authorid'] != $discuz_uid ? 1 : 0), $pasetype, $post['authorid']);

改为
复制代码 代码如下:
$post['message'] = discuzcode($post['message'], $post['smileyoff'], $post['bbcodeoff'], $post['htmlon'], $forum['allowsmilies'], $forum['allowbbcode'], ($forum['allowimgcode'] && $showimages ? 1 : 0), $forum['allowhtml'], ($forum['jammer'] && $post['authorid'] != $discuz_uid ? 1 : 0), $pasetype, $post['authorid'],$thread['subject']);                        //-----zouql代码运行开始------                        $post['message'] = preg_replace("/\s*id=\"cmsmb_htmlcode\"(.+?)textarea\s*/ies", "cmsmb_no_br('$1')", $post['message']);                        //----------------------------


(2)/include/discuzcode.func.php
①找到:
复制代码 代码如下:
if(!defined('IN_DISCUZ')) {

前面添加
复制代码 代码如下:
include_once('geshi.php'); 

②将下面这段代码放在其它函数结束的地方添加,比如:
找到:
复制代码 代码如下:
return ($htmlon || $allowhtml) && $parsetype != 1 ? $message : nl2br(str_replace(array("\t", '   ', '  '), array('            ', '     ', '    '), $message));}

在后面添加:
//分析语言高亮显示  
复制代码 代码如下:
function paste_language($language,$text)        {                 $text = str_replace("  ", "  ", $text);                 $text = str_replace(">", ">", $text);                $text = str_replace("<", "<", $text);                $text = str_replace("&", "&", $text);                 $text = str_replace(""", '"', $text);                  $text =& new geshi($text,$language);           // Enable line numbers. We want fancy line numbers, and we want every 5th line number to be fancy                $text->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS, 5);                 $text->set_overall_style('font:12px Verdana, Courier, monospace; color: #000066; border: 1px solid #d0d0d0; background-color: #fff;', true);                 $text->set_line_style('font:12px Verdana, Courier, monospace; color: #003030;', 'font-weight: bold; color: #006060;', true);                $text->set_code_style('font:12px Verdana, Courier, monospace; color: #000020;', 'color: #000020;');                 $text->set_link_styles(GESHI_LINK, 'color: #000060;');                $text->set_link_styles(GESHI_HOVER, 'background-color: #f0f000;');                 $text->set_header_content('54geek.com © 2007. 代码语言:'.$language);                $text->set_header_content_style('font-family:  Arial,Verdana,sans-serif; color: #808080; font-size: 12px; background-color: #f0f0ff; border-bottom: 1px dotted #d0d0d0; padding: 2px;');                 $text->set_footer_content('Parsed in <TIME> seconds,  using GeSHi <VERSION>');                $text->set_footer_content_style('font-family:  Arial,Verdana,sans-serif; color: #808080; font-size: 12px; background-color: #f0f0ff; border-top: 1px dotted #d0d0d0; padding: 2px;');                //echo "$text->parse_code()";                //return  preg_replace("#<br />#", "", $text->parse_code());                return $text->parse_code();        }


③找到
复制代码 代码如下:
function discuzcode($message, $smileyoff, $bbcodeoff, $htmlon = 0, $allowsmilies = 1, $allowbbcode = 1, $allowimgcode = 1, $allowhtml = 0, $jammer = 0, $parsetype = '0', $authorid = '0') {

改为
复制代码 代码如下:
function discuzcode($message, $smileyoff, $bbcodeoff, $htmlon = 0, $allowsmilies = 1, $allowbbcode = 1, $allowimgcode = 1, $allowhtml = 0, $jammer = 0, $parsetype = '0', $authorid = '0', $title='') {

④找到:
复制代码 代码如下:
if($parsetype != 1 && !$bbcodeoff && $allowbbcode) {                $message = preg_replace("/\s*\[code\](.+?)\[\/code\]\s*/ies", "codedisp('\\1')", $message);        }

改为
复制代码 代码如下:
if($parsetype != 1 && !$bbcodeoff && $allowbbcode) {                $message = preg_replace("/\s*\[code\](.+?)\[\/code\]\s*/ies", "code_htmldisp('\\1','$title')", $message);                //$message = preg_replace("/\s*\[html\](.+?)\[\/html\]\s*/ies", "code_htmldisp('\\1')", $message);        }

⑤找到下面函数后:
复制代码 代码如下:
function codedisp($code) {        global $discuzcodes;        $discuzcodes['pcodecount']++;        $code = htmlspecialchars(str_replace('\\"', '"', preg_replace("/^[\n\r]*(.+?)[\n\r]*$/is", "\\1", $code)));        $discuzcodes['codehtml'][$discuzcodes['pcodecount']] = " [Copy to clipboard]CODE<img src=\"images/smilies/shy.gif\" smilieid=\"8\" border=\"0\" alt=\"\" />code";        $discuzcodes['codecount']++;        return "[\tDISCUZ_CODE_$discuzcodes[pcodecount]\t]";}

后面再加一个函数:
复制代码 代码如下:
function code_htmldisp($code,$mytitle='') {        global $discuzcodes;        $mytitle .= '-code';        $discuzcodes['pcodecount']++;        $discuzcodes['codecount']++;        $code = htmlspecialchars(str_replace('\\"', '"', preg_replace("/^[\n\r]*(.+?)[\n\r]*$/is", "\\1", $code)));        $discuzcodes['codehtml'][$discuzcodes['pcodecount']] = "<div class=\"smalltxt\" style=\"margin:10px 0\"><textarea name=\"runcode$discuzcodes[codecount]\" rows=\"12\" cols=\"95\" id=\"cmsmb_htmlcode\">$code</textarea><br><input type=\"button\" value=\"运行代码\" onclick=\"runCode(runcode$discuzcodes[codecount])\"> <input type=\"button\" value=\"复制代码\" onclick=\"copycode(runcode$discuzcodes[codecount])\"> <input type=\"button\" value=\"另存代码\" onclick=\"saveCode(runcode$discuzcodes[codecount],'$mytitle$discuzcodes[codecount]')\">  提示:您可以先修改部分代码再运行</div>";        return "[\tDISCUZ_CODE_$discuzcodes[pcodecount]\t]";}

⑥查找
复制代码 代码如下:
if(!in_array($parsetype, array(1, 2)) && preg_match("/\[hide=?\d*\].+?\[\/hide\]/is", $message)) {

在前面添加:
复制代码 代码如下:
$message = preg_replace("/\s*\[language=(.+?)\](.+?)\[\/language\]\s*/ies", "paste_language('\\1','\\2')", $message);

(3)/include/global.func.php
在顶部
复制代码 代码如下:
if(!defined('IN_DISCUZ')) {        exit('Access Denied');}

后加入:
复制代码 代码如下:
//-----zouql代码运行开始------function cmsmb_no_br($str) {        $cmsmb_ori = array('<br />', ' ');        $cmsmb_new = array('', ' ');        $str1 = str_replace($cmsmb_ori,  $cmsmb_new, $str);        $str1 = $str1."textarea";        return $str1;}//-------------------------------


(4)/include/javascript/common.js
在最后加入下面三个函数即可:
复制代码 代码如下:
function runCode(obj) {        var winname = window.open('', "_blank", '');        winname.document.open('text/html', 'replace');        winname.opener = null // 防止代码对论坛页面修改        winname.document.write(obj.value);        winname.document.close();}function copycode(obj) {        var rng = document.body.createTextRange();        rng.moveToElementText(obj);        rng.scrollIntoView();        rng.select();        rng.execCommand("Copy");        rng.collapse(false);}function saveCode(obj,name) {        var myname = name + '.htm';                var winname = window.open('', '_blank', 'top=10000');        winname.document.open('text/html', 'replace');        winname.document.write(obj.value);        winname.document.execCommand('saveas','',myname);        winname.close();}

打包文件下载 主要功能:
1.几乎支持所有程序代码的高亮显示,包括以下语言:Actionscript、ADA、Apache Log、AppleScript、ASM、ASP、AutoIT、Backus-Naur form、Bash、BlitzBasic、C、C for Macs、C#、C++、CAD DCL、CadLisp、CFDG、CFDG、ColdFusion、CSS、Delphi、DIV、DOS、Eiffel、Fortran、Fortran、FreeBasic、GML、Groovy、HTML、Inno、IO、Java、Java 5、Javascript、LaTeX、Lisp、Lua、Microprocessor ASM、mIRC、MySQL、NSIS、Objective C、OCaml、OpenOffice BASIC、Oracle 8 SQL、Pascal、Perl、PHP、PL/SQL、Python、Q(uick)BASIC、robots.txt、Ruby、SAS、Scheme、SDLBasic、Smalltalk、Smarty、SQL、T-SQL、TCL、thinBasic、Uno IDL、VB.NET、Visual BASIC、Visual Fox Pro、Winbatch、X++、XML、Z80 ASM等等。
2.代码运行框,含复制代码、运行代码、另存代码三项功能。

使用方法:
1.如果你想高亮一种语言代码,可以使用下面的格式:
[languge=html]这里是HTML代码[/language]
[languge=xml]这里是XML代码[/language]
[languge=css]这里是CSS代码[/language]
[languge=javascript]这里是Javascript代码[/language]
[languge=asp]这里是ASP代码[/language]
[languge=php]这里是PHP代码[/language]
[languge=java]这里是Java代码[/language]
[languge=cpp]这里是C++代码[/language]
[languge=csharp]这里是C#代码[/language]
[languge=mysql]这里是Mysql代码[/language]
2.如果你只是想一段代码可以运行,则可以使用默认的复制代码 代码如下:格式。

安装方法:
1.下载解压压缩包,如果你使用的是默认模板,并且以前没有修改过以下几个文件:
/viewthread.php
/include/discuzcode.func.php
/include/global.func.php
/include/javascript/common.js
那么,您可以直接将其解压缩后的文件上传到网站根目录即可,其他模板可以参照后面的修改方法进行修改。
2.如果您以前修改过其中的一些或所有文件,你可以按照以下的说明,修改你以前修改过的文件,没有修改过的就直接上传覆盖就可以了:
(1)/viewthread.php
找到:
[code]
$post['message'] = discuzcode($post['message'], $post['smileyoff'], $post['bbcodeoff'], $post['htmlon'], $forum['allowsmilies'], $forum['allowbbcode'], ($forum['allowimgcode'] && $showimages ? 1 : 0), $forum['allowhtml'], ($forum['jammer'] && $post['authorid'] != $discuz_uid ? 1 : 0), $pasetype, $post['authorid']);

改为
复制代码 代码如下:
$post['message'] = discuzcode($post['message'], $post['smileyoff'], $post['bbcodeoff'], $post['htmlon'], $forum['allowsmilies'], $forum['allowbbcode'], ($forum['allowimgcode'] && $showimages ? 1 : 0), $forum['allowhtml'], ($forum['jammer'] && $post['authorid'] != $discuz_uid ? 1 : 0), $pasetype, $post['authorid'],$thread['subject']);                        //-----zouql代码运行开始------                        $post['message'] = preg_replace("/\s*id=\"cmsmb_htmlcode\"(.+?)textarea\s*/ies", "cmsmb_no_br('$1')", $post['message']);                        //----------------------------


(2)/include/discuzcode.func.php
①找到:
复制代码 代码如下:
if(!defined('IN_DISCUZ')) {

前面添加
复制代码 代码如下:
include_once('geshi.php'); 

②将下面这段代码放在其它函数结束的地方添加,比如:
找到:
复制代码 代码如下:
return ($htmlon || $allowhtml) && $parsetype != 1 ? $message : nl2br(str_replace(array("\t", '   ', '  '), array('            ', '     ', '    '), $message));}

在后面添加:
//分析语言高亮显示  
复制代码 代码如下:
function paste_language($language,$text)        {                 $text = str_replace("  ", "  ", $text);                 $text = str_replace(">", ">", $text);                $text = str_replace("<", "<", $text);                $text = str_replace("&", "&", $text);                 $text = str_replace(""", '"', $text);                  $text =& new geshi($text,$language);           // Enable line numbers. We want fancy line numbers, and we want every 5th line number to be fancy                $text->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS, 5);                 $text->set_overall_style('font:12px Verdana, Courier, monospace; color: #000066; border: 1px solid #d0d0d0; background-color: #fff;', true);                 $text->set_line_style('font:12px Verdana, Courier, monospace; color: #003030;', 'font-weight: bold; color: #006060;', true);                $text->set_code_style('font:12px Verdana, Courier, monospace; color: #000020;', 'color: #000020;');                 $text->set_link_styles(GESHI_LINK, 'color: #000060;');                $text->set_link_styles(GESHI_HOVER, 'background-color: #f0f000;');                 $text->set_header_content('54geek.com © 2007. 代码语言:'.$language);                $text->set_header_content_style('font-family:  Arial,Verdana,sans-serif; color: #808080; font-size: 12px; background-color: #f0f0ff; border-bottom: 1px dotted #d0d0d0; padding: 2px;');                 $text->set_footer_content('Parsed in <TIME> seconds,  using GeSHi <VERSION>');                $text->set_footer_content_style('font-family:  Arial,Verdana,sans-serif; color: #808080; font-size: 12px; background-color: #f0f0ff; border-top: 1px dotted #d0d0d0; padding: 2px;');                //echo "$text->parse_code()";                //return  preg_replace("#<br />#", "", $text->parse_code());                return $text->parse_code();        }


③找到
复制代码 代码如下:
function discuzcode($message, $smileyoff, $bbcodeoff, $htmlon = 0, $allowsmilies = 1, $allowbbcode = 1, $allowimgcode = 1, $allowhtml = 0, $jammer = 0, $parsetype = '0', $authorid = '0') {

改为
复制代码 代码如下:
function discuzcode($message, $smileyoff, $bbcodeoff, $htmlon = 0, $allowsmilies = 1, $allowbbcode = 1, $allowimgcode = 1, $allowhtml = 0, $jammer = 0, $parsetype = '0', $authorid = '0', $title='') {

④找到:
复制代码 代码如下:
if($parsetype != 1 && !$bbcodeoff && $allowbbcode) {                $message = preg_replace("/\s*\[code\](.+?)\[\/code\]\s*/ies", "codedisp('\\1')", $message);        }

改为
复制代码 代码如下:
if($parsetype != 1 && !$bbcodeoff && $allowbbcode) {                $message = preg_replace("/\s*\[code\](.+?)\[\/code\]\s*/ies", "code_htmldisp('\\1','$title')", $message);                //$message = preg_replace("/\s*\[html\](.+?)\[\/html\]\s*/ies", "code_htmldisp('\\1')", $message);        }

⑤找到下面函数后:
复制代码 代码如下:
function codedisp($code) {        global $discuzcodes;        $discuzcodes['pcodecount']++;        $code = htmlspecialchars(str_replace('\\"', '"', preg_replace("/^[\n\r]*(.+?)[\n\r]*$/is", "\\1", $code)));        $discuzcodes['codehtml'][$discuzcodes['pcodecount']] = " [Copy to clipboard]CODE<img src=\"images/smilies/shy.gif\" smilieid=\"8\" border=\"0\" alt=\"\" />code";        $discuzcodes['codecount']++;        return "[\tDISCUZ_CODE_$discuzcodes[pcodecount]\t]";}

后面再加一个函数:
复制代码 代码如下:
function code_htmldisp($code,$mytitle='') {        global $discuzcodes;        $mytitle .= '-code';        $discuzcodes['pcodecount']++;        $discuzcodes['codecount']++;        $code = htmlspecialchars(str_replace('\\"', '"', preg_replace("/^[\n\r]*(.+?)[\n\r]*$/is", "\\1", $code)));        $discuzcodes['codehtml'][$discuzcodes['pcodecount']] = "<div class=\"smalltxt\" style=\"margin:10px 0\"><textarea name=\"runcode$discuzcodes[codecount]\" rows=\"12\" cols=\"95\" id=\"cmsmb_htmlcode\">$code</textarea><br><input type=\"button\" value=\"运行代码\" onclick=\"runCode(runcode$discuzcodes[codecount])\"> <input type=\"button\" value=\"复制代码\" onclick=\"copycode(runcode$discuzcodes[codecount])\"> <input type=\"button\" value=\"另存代码\" onclick=\"saveCode(runcode$discuzcodes[codecount],'$mytitle$discuzcodes[codecount]')\">  提示:您可以先修改部分代码再运行</div>";        return "[\tDISCUZ_CODE_$discuzcodes[pcodecount]\t]";}

⑥查找
复制代码 代码如下:
if(!in_array($parsetype, array(1, 2)) && preg_match("/\[hide=?\d*\].+?\[\/hide\]/is", $message)) {

在前面添加:
复制代码 代码如下:
$message = preg_replace("/\s*\[language=(.+?)\](.+?)\[\/language\]\s*/ies", "paste_language('\\1','\\2')", $message);

(3)/include/global.func.php
在顶部
复制代码 代码如下:
if(!defined('IN_DISCUZ')) {        exit('Access Denied');}

后加入:
复制代码 代码如下:
//-----zouql代码运行开始------function cmsmb_no_br($str) {        $cmsmb_ori = array('<br />', ' ');        $cmsmb_new = array('', ' ');        $str1 = str_replace($cmsmb_ori,  $cmsmb_new, $str);        $str1 = $str1."textarea";        return $str1;}//-------------------------------


(4)/include/javascript/common.js
在最后加入下面三个函数即可:
复制代码 代码如下:
function runCode(obj) {        var winname = window.open('', "_blank", '');        winname.document.open('text/html', 'replace');        winname.opener = null // 防止代码对论坛页面修改        winname.document.write(obj.value);        winname.document.close();}function copycode(obj) {        var rng = document.body.createTextRange();        rng.moveToElementText(obj);        rng.scrollIntoView();        rng.select();        rng.execCommand("Copy");        rng.collapse(false);}function saveCode(obj,name) {        var myname = name + '.htm';                var winname = window.open('', '_blank', 'top=10000');        winname.document.open('text/html', 'replace');        winname.document.write(obj.value);        winname.document.execCommand('saveas','',myname);        winname.close();}

打包文件下载
回复

使用道具 举报

0

主题

2万

回帖

0

积分

中级会员

Rank: 3Rank: 3

积分
0
发表于 2022-8-11 10:39:57 | 显示全部楼层
我要金豆金豆金豆
回复 支持 反对

使用道具 举报

0

主题

1万

回帖

0

积分

中级会员

Rank: 3Rank: 3

积分
0
发表于 2022-10-8 07:14:35 | 显示全部楼层
看看看咋么
回复 支持 反对

使用道具 举报

4

主题

1万

回帖

60

积分

注册会员

Rank: 2

积分
60
发表于 2022-12-12 02:17:41 | 显示全部楼层
啊啊啊啊啊啊啊啊啊啊啊啊啊啊
回复 支持 反对

使用道具 举报

15

主题

2万

回帖

122

积分

注册会员

Rank: 2

积分
122
发表于 2022-12-22 21:20:36 | 显示全部楼层
天天源码社区www.tiantianym.com
回复 支持 反对

使用道具 举报

15

主题

2万

回帖

122

积分

注册会员

Rank: 2

积分
122
发表于 2023-6-18 15:45:06 | 显示全部楼层
撒房产税陈飞飞
回复 支持 反对

使用道具 举报

0

主题

1万

回帖

0

积分

中级会员

Rank: 3Rank: 3

积分
0
发表于 2023-11-11 23:21:43 | 显示全部楼层
这个源码不错啊
回复 支持 反对

使用道具 举报

7

主题

2万

回帖

398

积分

中级会员

Rank: 3Rank: 3

积分
398
发表于 2024-3-21 16:14:35 | 显示全部楼层
问问问企鹅哇哇哇哇哇
回复 支持 反对

使用道具 举报

9

主题

2万

回帖

420

积分

中级会员

Rank: 3Rank: 3

积分
420
发表于 2024-4-13 23:10:27 | 显示全部楼层
老大你好你好好你好
回复 支持 反对

使用道具 举报

0

主题

2万

回帖

0

积分

中级会员

Rank: 3Rank: 3

积分
0
发表于 2024-5-9 13:48:07 | 显示全部楼层
加快速度很快就撒谎
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

手机版|小黑屋|网站地图|源码论坛 ( 海外版 )

GMT+8, 2024-11-24 04:41 , Processed in 0.089970 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表