欢迎来到福编程网,本站提供各种互联网专业知识!

推荐Discuz!5的PHP代码高亮显示与实现可运行代码

发布时间:2007-03-15 作者: 来源:转载
discuz!5.0论坛显示风格的php代码高亮显示插件,把php代码进行语法着色,喜欢PHP的同志可以轻松的看代码啦。同时添加了html代码运行功能。此插件是在以前某位同志发布的Discuz!4的php代码高亮显示基础之上修改完成。另外,本人的php学习进入了停滞状态,希望有
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']]="

$code

ffcod=delpost.runcode$discuzcodes[codecount].value;ffcod=ffcod.replace(/

/g,'');delpost.runcode$discuzcodes[codecount].value=ffcod;提示:您可以先修改部分代码再运行

";
$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']]="

[复制PHP代码]

PHP代码如下:
$code

";
$discuzcodes['codecount']++;
return"[tDISCUZ_CODE_$discuzcodes[pcodecount]t]";
}

functionphphighlite($code){
if(!strpos($code,"$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('

','',$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);

相关推荐