清除所有注释,但保留PHPDoc

清除所有注释,但保留PHPDoc,php,regex,Php,Regex,我正在创建一个调试/doc脚本,我想忽略所有的标准注释,但保持PHPDoc不变 我使用的代码是: // Get file into an array line by line $line = file($file); // Trim all empty space and # or // comments array_map(function($v) { $v = trim($v); $v = preg_split("/\/\/|

我正在创建一个调试/doc脚本,我想忽略所有的标准注释,但保持PHPDoc不变

我使用的代码是:

    // Get file into an array line by line
    $line = file($file);

    // Trim all empty space and # or // comments
    array_map(function($v) {
        $v = trim($v);
        $v = preg_split("/\/\/|#/", $v)[0];
        return $v;
    }, $line);
问题是,这仍然会留下多行C风格的注释,如:

/*
This
means
nothing
*/
因此,我相信我必须阅读整个文件,找到每个
/*
,同时忽略
/**
(PHPDoc)并删除所有内容,直到
*/


所以正则表达式需要是多行的。我对使用
file()
的解决方案持开放态度,但我认为
file\u get\u content()
在单独的行上找到C风格的打开和关闭注释标记会更为实用。

我认为最好的方法是使用
令牌\u get\u all()

试试这个-反射,如果它是面向对象的话,还有@ArtisiticPhoenix,谢谢。这看起来是像akond建议的那样使用类/token_get_all的一个很好的起点。是的,我更喜欢使用反射而不是token_get_all,因为它增加了一点抽象,但有些事情我认为只能使用token_get_all来完成,或者regx,你可以用regx和一个简单的lexer类型设置做同样的事情,但那是一个完全不同的主题,谢谢,我将不得不对此进行深入研究。谢谢你提醒我。