Регулярное выражение, как сделать регулярное выражение вторым / ** в качестве отправной точки

Вот пример источника $

/** * These functions can be replaced via plugins. If plugins do not redefine these * functions, then these will be used instead. */ if ( !function_exists('wp_set_current_user') ) : /** * Changes the current user by ID or name. * */ function wp_set_current_user($id, $name = '') { 

Внимание : у некоторых нет строки function_exists.

Для моей специальной цели я пытаюсь разобрать докблоки с регулярным выражением.

Вот регулярное выражение

 $t = preg_match_all("@(/\*\*.*?\*/\nfunction\s.*?\(.*?\))\s{@mis",$source,$m); 

Я ожидаю получить:

  /** * Changes the current user by ID or name. * */ function wp_set_current_user($id, $name = '') { 

но вместо этого он возвращает мне весь пример кода.

Любая помощь будет оценена по достоинству.


Я узнаю, что некоторые люди спрашивают меня о своей цели, но я не думаю, что это важно здесь.

Я использую geany, и я узнаю, что существующий подсказку кода WordPress не является полной.

И анализаторы docblock я обнаружил, что не анализировать имена функций и аргументы функции.

Поэтому я пытаюсь разобрать их самостоятельно.

формат подсказки кода geany

 wp_set_current_user|Changes the current user by ID or name.|($id, $name = '')| 

Однако, моя точка зрения на этот вопрос заключается в том, как сделать регулярное выражение вторым «/ **» в качестве отправной точки? Прошу прощения за моего бедного английского, который смутил всех вас.