我的文件顶部有评论。
e.g。
/**
* Comments for file.
*
*/
使用PHP,我使用file_get_contents将文件内容读入变量现在我想在注释中获取值。对于上面的例子,预期结果将是
* Comments for file
*
*
这意味着我希望内容包含在/ **和* /中。这个文件可以有多个注释,但我想要第一个位于文件顶部的文件。
有任何想法/帮助吗?
更新: - 这是普通的文本文件。不是PHP文件。
答案 0 :(得分:6)
您可以使用tokenizer
阅读评论$source = file_get_contents('example.php');
$tokens = token_get_all($source);
答案 1 :(得分:1)
完成Dipesh Parmar的好答案,一个例子:
$subject =<<<'LOD'
sdf df sdf sdf
sdf sdf sdf sdf
<?php
/**
* Youhou!!
*
* HiHa!
*
*/
LOD;
$tokens = token_get_all($subject);
foreach($tokens as $token) {
if (is_array($token)&&$token[0]==T_DOC_COMMENT) {
echo substr(substr($token[1],4),0,-3);
break;
}
}
注意:当且仅当主题包含<?php
时,此工作才会被标记生成器视为简单文本。如果缺少<?php
,您可以轻松地在主题之前添加它:
$tokens = token_get_all('<?php'.$subject);
你可以系统地做到这一点,这个任务有两个<?php
不是问题。
答案 2 :(得分:0)
尝试/\*{2}\s(.*?)\s\*/
问候。
答案 3 :(得分:0)
如果文件是PHP
类,那么您可以使用ReflectionClass::getDocComment
和ReflectionMethod::getDocComment
e.g
$instance = new ClassWithComments();
$reflectionClass = new \ReflectionClass($instance);
echo $reflectionCLass->getDocComment();
答案 4 :(得分:0)
标准建议是使用解析器而不是正则表达式。
然而^/\*(([^*]*[*]*[^*/])+)\*/
应该可以解决您的问题。记得在你的正则表达式引擎中启用多行匹配。捕获组1包含结果。