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/index.php/essay/12470.html