Совпадение всего внутри блока комментариев PHP с использованием RegExr - PullRequest
0 голосов
/ 08 сентября 2011

Я изо всех сил пытаюсь обработать все внутри блока комментариев PHP, используя RegExr.

т.е.

/**
 * MATCH EVETHING HERE
 */

Итак, я хочу сопоставить все, начиная сразу после /** и заканчивая прямо перед */.

Может кто-нибудь предоставить мне соответствующий RegExr для этого.

Заранее спасибо

РЕДАКТИРОВАТЬ : решено, его /\/\/*/*(.*?)*//s

Ответы [ 2 ]

1 голос
/ 08 сентября 2011
preg_match_all('~/**(.*?)*/~ims', $from, $to); 

foreach($to[1] as $contents){
    //$contents contain comment (without /** */) 
}
0 голосов
/ 08 сентября 2011

Если вы хотите поймать комментарий класса, вы можете использовать механизмы отражения PHP, используя метод ReflectionClass::getDocComment().

Пример файла класса:

/** 
* A test class
*
* @param  foo bar
* @return baz
*/
class TestClass { }

Использование класса отражения:

$rc = new ReflectionClass('TestClass');
var_dump($rc->getDocComment())

Выходы:

string(55) "/** 
* A test class
*
* @param  foo bar
* @return baz
*/"

Совет:
На странице руководства ReflectionClass есть хороший комментарий с упоминанием этого рег.

    $expr = "/((?:\/\*(?:[^*]|(?:\*+[^*\/]))*\*+\/)|(?:\/\/.*))/"; 
...