我一般是这样
echo highlight_string($code);

解决方案 »

  1.   

    这里是演示地址
    http://www.yubeinet.com/surfchen/simple.class.html
      

  2.   

    我知道有,但是自己实现跟用现成的还是不一样的吧?
    而且我写的这个类是可以对PHP代码重新格式化的。
    大家可以不用回车换行空格,不用对齐,输入一段PHP代码测试一下
      

  3.   

    接下来,我还要扩展到其它语言如C++,java,vb的高亮显示和格式化,希望能提点意见
      

  4.   

    经测试,毛病多多。暂列如下,望修订!
    bug
    1、把数组元素定义的“=>”算符处理成了“= >”
    2、把switch的默认项default;处理成了default:default
    3、把形如$this->mbNewStatement= true ;处理成了形如$this->=mbNewStatement true ; 
    4、直接把\t替换撑个空格是不妥当的
    5、把
    $this->mResultString.= "<font color='". 
                        $this->mColorMap[$this->mFileType]['string']."'>";
    显示成
    $this->mResultString.= "$this->mColorMap[$this->mFileType]['string']."'>"; 
    是不妥当的
      

  5.   

    谢谢 xuzuning(唠叨),几个问题我今天测试也发现了,下班以后fix。
    还有几个问题和说明:
    1)同时//分行注释的时候,会显示在一行内
    2)case语句的格式化比较麻烦,现在会显示成这种格式:
    case 1:
        {
        break;
    }
    case 2:
       break;
    3) default关键字没有加入关键字列表
    4) \t在格式化的时候是忽略的,忽略的还有空格,\r\n,就是这段代码:
    if ($this->mbIgnoreSpace)  
    {
            $str = preg_replace('/([\n])/', '', $str ) ;
            $str = str_replace("\t", '', $str ) ;
            $str = str_replace(' ', '', $str ) ;
    }
    5) 对于一条语句没有结束就换行,现在的做法是保持原有格式,没有格式化也是有问题的,
    应该统计一行不超过80个字符,也没有好的思路
    6)扩展的时候类c语言还可以,都是{}分割,但是象vb是换行 end语句结束的,也不能这么
    分析
    7)效率确实是个问题,跟c直接用指针操作比肯定会比较慢,只能想想能不能优化点了也许本身这个程序没有什么用途,但是去做的时候会发现其中有很多可以研究的东西的