Php 自己的语法高亮

Php 自己的语法高亮,php,syntax-highlighting,Php,Syntax Highlighting,我打算用PHP编写自己的简单语法highlighter。我已经完成了基于正则表达式和字符串替换的基本算法,但我真正不知道的是如何禁用替换已注释的关键字 例如: /** * Some class * * @property-read $foo */ class Test { private $foo; public function __construct() { } } 现在,我的解决方案只是突出显示定义的关键字(如类或变量),但也突出显

我打算用PHP编写自己的简单语法highlighter。我已经完成了基于正则表达式和字符串替换的基本算法,但我真正不知道的是如何禁用替换已注释的关键字

例如:

/**
 * Some class
 *
 * @property-read $foo
 */
 class Test
 {
     private $foo;

     public function __construct()
     {
     }
 }
现在,我的解决方案只是突出显示定义的关键字(如类或变量),但也突出显示注释的关键字


此问题的任何解决方案?

您可以通过以下逻辑排除注释行:

如果行以
/**
开头,则禁用高亮显示
如果下一行以
*
开头,则不执行任何操作并检查下一行
如果行以
*/
开头,则可重新启用高亮显示


只是一个简单的猜测,可以更精确地定义,但应该作为一个逻辑来工作。

为什么不使用PHP来完成这项工作呢?这样,您的语法highlighter将以与Zend引擎完全相同的方式解析PHP代码,这可能会给您带来比正则表达式更好的结果。

为什么不借鉴vi或vim已经做到这一点的经验呢?很久以前,我记得我们开发的一些定制的基于标记的语言,我们希望在VI和VIM中突出显示语法,也就是说,我们在前面提到的一些配置文件中修改了一些


更多地了解vi或vim或任何文本编辑器是如何做到这一点的可能会更有帮助

还有以
/
#
开头的部分,我想是的,会为“注释启动器”定义一个数组@Will Vousden:我知道这个简单的逻辑有很多可能失败。这只是一个简单的猜测,不是一个完整的实现逻辑,比正则表达式更快:)是的,我一直在考虑这个问题,但是如果我想添加多语言支持(例如html、js等),该怎么办?在这些情况下,我应该如何使用关键字?