2010-05-01 2 views
4

У меня есть это:Regex раздеться PHPDoc многострочный комментарий

/** 
* @file 
* API for loading and interacting with modules. 
* More explaination here. 
* 
* @author Reveller <[email protected]> 
* @version 19:05 28-12-2008 
*/ 

Я ищу регулярное выражение, чтобы лишить все, кроме @token данных, так что результат будет:

@file API for loading and interacting with modules. More explaination here. 
@author Reveller <[email protected]> 
@version 19:05 28-12-2008 

I теперь имеют это:

$text = preg_replace('/\r?\n *\* */', ' ', $text); 

Выполняет эту задачу частично: она удаляет * перед каждой линией. Кто мог мне помочь, так это и полоски/**, и последняя косая черта? Любая помощь будет принята с благодарностью!

P.S: Если, например, commentlbock будет содержать что-то вроде

/** 
* @foo Here's some slashes for ya:/and \ 
*/ 

Тогда, очевидно, косые после @foo не может быть лишен. Reult должен быть:

@foo Here's some slashes for ya:/and \ 

Я надеюсь, что регулярное выражение гуру там :-)

ответ

4

Попробуйте

$result = preg_replace('%(\r?\n(?! \* [email protected]))?^(/\*\*\r?\n \* | \*/| \* ?)%m', ' ', $subject); 

Это будет вставить дополнительное пространство в начале каждой строки, так что вам может понадобиться разделить ведущие пробелы на втором шаге.

Объяснение:

(\r?\n(?! \* [email protected]))?: Если это возможно, соответствовать новой строки, если это не следует * @

^: Утверждают, что следующий матч начинается в начале строки

(: Либо матч

/\*\*\r?\n \*/**<newline> *

| или

\*/: */

|: или

\* ?: *, необязательно следует другое пространство

): Конец последовательности чередования

+0

Вау, спасибо! Он работает как шарм :-) Обрезка пробелов не проблема. – Pr0no

+1

@ Reveller, если это решило вашу проблему, вы должны отметить ответ как принятый, и, возможно, также возместить его. –

+0

Сделано и сделано :-) Спасибо, что рассказали мне. Я здесь новичок и не знал, что вы можете это сделать. – Pr0no

Смежные вопросы