如何获取php类函数';评论?

如何获取php类函数';评论?,php,reflection,comments,eaccelerator,Php,Reflection,Comments,Eaccelerator,我需要获取php类中特定函数的注释,例如: /* Some commets for a class */ class Foo extends Bar { function __construct() {} // a single line comment to the function foo() function foo() {} /* a multi-line comment to the function bar() */ public

我需要获取php类中特定函数的注释,例如:

/* Some commets for a class */
class Foo extends Bar {
    function __construct() {}

    // a single line comment to the function foo()
    function foo() {}

    /* a multi-line comment
    to the function bar() */
    public static function bar() {}

}
是的,我知道,使用ReflectionMethod->getDocComment()可以很容易地做到这一点,但它对我不起作用,因为我使用eAccelerator,它会从代码中剪切所有注释,因此getDocComment总是返回FALSE

我也不想重新编译eAccelerator:)

我需要这样一个函数:

function get_function_comment($class_contents, $function_name) {}
因此,我将返回一个函数的注释,$class_contents是一个存储类内容的变量,如上例所示

我试着自己做,但我无法创建一个合适的regexp


请帮助我:)

尝试使用适当的phpDoc注释:

/**
 * Something explaining this
 *
 * @return string
 */
function foo(){  }

哦,老兄,我几乎为写这个正则表达式感到肮脏,但这可能会奏效(还没有测试过,所以不要相信我的话)

理论上,它的工作原理如下:

  • 查找以下任一项:
    • //直到那条线的尽头
    • /*,然后所有的事情直到*/
  • 然后吃掉所有的空格直到行尾
  • 在下一行输入任意数量的空格或单词字符,直到您点击“函数”,一些空格,然后是您想要的整个函数名

实际上:“有些人在遇到问题时,会想“我知道,我会使用正则表达式。”现在他们有两个问题

我不认为一个正则表达式就能解决这个问题。你不可能编写一个实现整个PHP语法分析器的正则表达式……如果这是可能的话,就不会有太多的麻烦,将是执行此操作的方法。
getDocComment
只返回解析器认为是
T\u DOC\u COMMENT
的特定格式的注释。它不会返回其他注释。实际上,当类也有注释时,这不起作用。如下所示:`/**CMS用户管理*/``class Adminusers扩展了模块{``}`,因此它将从类内容开头的文本返回到所需的函数名。但我只需要函数的注释:)使用什么注释并不重要。无论如何,每个加速器都会切断它。
preg_match('#(//.*$|/\*.*\*/)\s*$[\s\w]*function\s+$function_name\b#Usmi', $class_contents, $result);