0

たとえば、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 は上記の例のようにクラスの内容を格納する変数です。

自分でやろうとしましたが、適切な正規表現を作成できません..

私を助けてください :)

4

2 に答える 2

1

ああ、私はこの正規表現を書くのがほとんど汚いと感じますが、これでうまくいくかもしれません(まだテストしていないので、私の言葉を信じないでください)。

preg_match('#(//.*$|/\*.*\*/)\s*$[\s\w]*function\s+$function_name\b#Usmi', $class_contents, $result);

理論的には、次のように機能します。

  • 次のいずれかを検索します。
    • //そしてその行の終わりまでのすべてまたは
    • / *、それから*/までのすべて
  • 次に、行末まですべての空白を食べます
  • 「function」、いくつかの空白、そして必要な関数名全体を押すまで、次の行で任意の量の空白または単語文字を取ります。

実際には、「問題に直面したときに、「わかっている、正規表現を使用する」と考える人もいます。現在、2つの問題があります。」

于 2011-10-19T16:10:35.973 に答える
0

適切な phpDoc コメントを使用してみてください。

/**
 * Something explaining this
 *
 * @return string
 */
function foo(){  }
于 2011-10-19T15:41:30.060 に答える