推荐Discuz!5的PHP代码高亮显示与实现可运行代码
推荐Discuz!5的PHP代码高亮显示与实现可运行代码
发布时间:2016-12-29 来源:查字典编辑
摘要:discuz!5.0论坛显示风格的php代码高亮显示插件,把php代码进行语法着色,喜欢PHP的同志可以轻松的看代码啦。同时添加了html代...

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");

rng.collapse(false);

}

在这个函数结束的下面添加:

复制代码 代码如下:

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

查找

复制代码 代码如下:

$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("/^[nr]*(.+?)[nr]*$/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);

在其下面继续添加:

复制代码 代码如下:

//-------runcode

$message=preg_replace("/s*[runcode](.+?)[/runcode]s*/ies","runcodedisp('1')",$message);

//-------php

$message=preg_replace("/s*[php](.+?)[/php]s*/ies","phpcodedisp('1')",$message);

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新php教程学习
热门php教程学习
编程开发子分类