Discuz!5的PHP代码高亮显示插件(黑暗中的舞者更新)
2018-09-07 13:19
  discuz!5.0论坛显示风格的php代码高亮显示插件, 
把php代码进行语法着色,喜欢PHP的同志可以轻松的看代码啦。 
同时添加了html代码运行功能。 
此插件是在以前某位同志发布的Discuz!4的php代码高亮显示基础之上修改完成。 
另外,本人的php学习进入了停滞状态, 
希望有人能帮助我走出php的学习困境 
MyQQ:5642382我的QQ群:2577162 
功能:发贴时使用[php]php代码[/php]标记来高亮显示php代码, 
使用[runcode]Html代码[/runcode]标记来运行HTML代码(在客户端运行非服务器)。 
插件添加步骤如下: 
1.修改include/common.js 
查找 
functioncopycode(obj){ 
varrng=document.body.createTextRange(); 
rng.moveToElementText(obj); 
rng.scrollIntoView(); 
rng.select(); 
rng.execCommand(Copy); 
} 
在这个函数结束的下面添加: 
[Copytoclipboard][-]CODE: 
functionrunCode(obj){ 
varwinname=window.open(,_blank,); 
winname.document.open(text/html,replace); 
winname.document.writeln(obj.value); 
winname.document.close(); 
} 
functionsaveCode(obj){ 
varwinname=window.open(,_blank,top=10000); 
winname.document.open(text/html,replace); 
winname.document.writeln(obj.value); 
winname.document.execCommand(saveas,,code.htm); 
winname.close(); 
} 
2.修改include/discuzcode.func.php 
查找 
[Copytoclipboard][-]CODE: 
$discuzcodes[codecount]++; 
return[\tDISCUZ_CODE_$discuzcodes[pcodecount]\t]; 
} 
(注:也可以用Editplus直接查找到代码的第110行来进行下面的添加) 
在下面继续添加: 
/-------添加[runcode]Html代码[/runcode]来运行Html代码 
functionruncodedisp($code){ 
global$discuzcodes; 
$discuzcodes[pcodecount]++; 
$code=htmlspecialchars(str_replace(\\,,preg_replace(/^[\n\r]*(.+?)[\n\r]*$/is,\\1,$code))); 
$discuzcodes[codehtml][$discuzcodes[pcodecount]]=<br><br><divclass=\smalltxt\style=\margin-left:2em;margin-right:2em\><textareaname=\runcode$discuzcodes[codecount]\rows=\1\cols=\95\style=\height:200px\>$code</textarea><br><inputtype=\button\value=\运行代码\onclick=\runCode(runcode$discuzcodes[codecount])\><inputtype=\button\value=\复制代码\onclick=\copycode(runcode$discuzcodes[codecount])\><inputtype=\button\value=\另存代码\onclick=\saveCode(runcode$discuzcodes[codecount])\><scriptlanguage=\JavaScript\>ffcod=delpost.runcode$discuzcodes[codecount].value;ffcod=ffcod.replace(/<br\/>/g,);delpost.runcode$discuzcodes[codecount].value=ffcod;</script>提示:您可以先修改部分代码再运行</div><br>; 
$discuzcodes[codecount]++; 
return[\tDISCUZ_CODE_$discuzcodes[pcodecount]\t]; 
} 
//-------添加[php]php代码[/php]来高亮显示php代码,进行php语法着色 
functionphpcodedisp($code){ 
global$discuzcodes; 
$discuzcodes[pcodecount]++; 
$code=phphighlite(str_replace(\\\,\,$code)); 
$discuzcodes[codehtml][$discuzcodes[pcodecount]]=<br><divclass=\msgheader\><divclass=\right\><ahref=\###\class=\smalltxt\onclick=\copycode($(phpcode$discuzcodes[codecount]));\>[复制PHP代码]</a></div>PHP代码如下:</div><divclass=\msgborder\id=\phpcode$discuzcodes[codecount]\>$code</div><br>; 
$discuzcodes[codecount]++; 
return[\tDISCUZ_CODE_$discuzcodes[pcodecount]\t]; 
} 
functionphphighlite($code){ 
if(!strpos($code,<?\n)&&!strpos($code,<?)&&substr($code,0,2)!=<?){ 
$code=<.?.trim($code).?.>; 
$addedtags=1; 
} 
ob_start(); 
$oldlevel=error_reporting(0); 
highlight_string($code); 
error_reporting($oldlevel); 
$buffer=ob_get_contents(); 
ob_end_clean(); 
if($addedtags){ 
$openingpos=strpos($buffer,<?); 
$closingpos=strrpos($buffer,?); 
$buffer=substr($buffer,0,$openingpos).substr($buffer,$openingpos+5,$closingpos-($openingpos+5)).substr($buffer,$closingpos+5); 
} 
$buffer=str_replace(,\,$buffer); 
$buffer=str_replace(<br/>,,$buffer); 
return$buffer; 
} 
//-------结束 
3.继续修改include/discuzcode.func.php 
查找 
$message=preg_replace(/\s*\[code\](.+?)\[\/code\]\s*/ies,codedisp(\\1),$message); 
在其下面继续添加: 
[Copytoclipboard][-]CODE: 
//-------runcode 
$message=preg_replace(/\s*\[runcode\](.+?)\[\/runcode\]\s*/ies,runcodedisp(\\1),$message); 
//-------php 
$message=preg_replace(/\s*\[php\](.+?)\[\/php\]\s*/ies,phpcodedisp(\\1),$message); 
[本帖最后由yzxicq0于2006-9-417:11编辑] 
上一篇:ajax缓存问题解决途径
文章标题:Discuz!5的PHP代码高亮显示插件(黑暗中的舞者更新)
文章链接:http://soscw.com/essay/12470.html