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