PHP视频教学,让你更快更轻松的掌握PHP。

查看完整版本: php代码高亮

leo 2007-12-7 14:30

php代码高亮

最近论坛的php高亮加上去了,现在把方法总结一下:
1: 修改 include/discuzcode.func.php
在 function codedisp($code)这个函数的下面再添加两个函数:代码如下[code]
/*************Display code start***************/
function phpcodedisp($code) {
        global $discuzcodes;
        $discuzcodes['pcodecount']++;
        $code = phphighlite(str_replace('\\"', '"', preg_replace("/^[\n\r]*(.+?)[\n\r]*$/is", "[url=file://\\1]\\1[/url]", $code)));
        $discuzcodes['codehtml'][$discuzcodes['pcodecount']] = "<div class=\"blockcode\"><span class=\"headactions\" onclick=\"copycode($('code{$discuzcodes['codecount']}'));\">[Copy to clipboard]</span><h5>HP CODE:</h5><code id=\"code{$discuzcodes['codecount']}\">{$code}</code></div>";
        $discuzcodes['codecount']++;
        return "[\tDISCUZ_CODE_$discuzcodes[pcodecount]\t]";
}
/*************Display code End***************/

/**************phphigh lite start*************/
function phphighlite($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, $openingpos+1, $closingpos-($openingpos+1)).substr($buffer, $closingpos+5);
        }
        $buffer = str_replace('"', "\"", $buffer);
        $buffer = str_replace('<br />', '', $buffer);
        return $buffer;
}
/***********phphighlite  end***********/[/code]2.在function discuzcode中的代码[code]if($parsetype != 1 && !$bbcodeoff && $allowbbcode) {
     $message = preg_replace("/\s*\[code\](.+?)\[\/code\]\s*/ies", "codedisp('\\1')", $message);
}[/code]再添加一段代码:[code]/*********php high lite start******/
    if($parsetype != 1 && !$bbcodeoff && $allowbbcode) {
        $message = preg_replace("/\s*\[php\](.+?)\[\/php\]\s*/ies", "phpcodedisp('\\1')", $message);
        }
        /*********php high lite end*******/[/code]3.修改include/javascript/editor.js页面
将代码[code]insertText(text, strlen(opentag), strlen(closetag), in_array(tagname, ['code', 'quote', 'free', 'hide']) ? true : false);[/code]修改为:[code]insertText(text, strlen(opentag), strlen(closetag), in_array(tagname, ['code', 'quote', 'free', 'hide', 'php']) ? true : false);[/code]将代码[code]if(in_array(cmd, ['quote', 'code', 'free', 'hide'])) [/code]修改为[code]if(in_array(cmd, ['quote', 'code', 'free', 'hide', 'php']))[/code]4.修改templates/default/post_editor.htm页面
在[code]<td><a id="{$editorid}_cmd_code"><img src="images/common/bb_code.gif" title="{lang post_discuzcode_code}" alt="Code" /></a></td>[/code]的下面再添加一行[code]<td><a id="{$editorid}_cmd_php"><img src="images/common/bb_php.gif" title="HP CODE" alt="php" /></a></td>[/code]5,最后将[attach]293[/attach]图片上传到images/common的目录下面,你也可以自己制作这个小图片

leo 2007-12-7 14:40

这个适合6.0的简体,繁体,utf-8,gbk版本,因为中间都是使用的英文,也就防止了出现utf和gbk不兼容的问题,最容易出现错误的是最后一步,添加那一行代码,一定要注意在上一行敲回车之后将代码复制进去,要如然很可能会出现错误!

robin 2007-12-7 15:51

这个东东真不错

离群的猴子 2007-12-9 17:19

:handshake 多谢。:lol

123waily 2008-3-25 17:56

多谢多谢多谢多谢多谢多谢!

123waily 2008-3-28 16:39

这个东东真不错,很想下,不够分呀

123waily 2008-3-28 16:40

再顶一下,我下了研究一下,谢谢:53:

123waily 2008-3-28 16:48

<?php
/*
    php 代码高亮显示;
*/
if($_REQUEST['string'])
{
    $string = $_REQUEST['string'];
    $string = stripSlashes($string);
    highlight_string($string);
}
?>

libaiyi 2008-4-1 14:23

好就是好!

我也顶下。以后高手多发下。

libaiyi 2008-4-1 14:24

不好意思 ,再说下,我就是想多点积分。

libaiyi 2008-4-1 14:25

说不得

:10: 再来一分吧。我和积分很多东西都看不了。

libaiyi 2008-4-1 14:26

地区性

:30: 又来弄积分,不好意思了。!
页: [1]
查看完整版本: php代码高亮