У меня есть это:
/**
* @file
* API for loading and interacting with modules.
* More explaination here.
*
* @author Reveller <me@localhost>
* @version 19:05 28-12-2008
*/
Я ищу regex для разделения всех кроме @token данных, таким образом, результат был бы:
@file API for loading and interacting with modules. More explaination here.
@author Reveller <me@localhost>
@version 19:05 28-12-2008
У меня теперь есть это:
$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 \
Я надеюсь, что там существует regex гуру :-)
Попытка
$result = preg_replace('%(\r?\n(?! \* ?@))?^(/\*\*\r?\n \* | \*/| \* ?)%m', ' ', $subject);
Он будет вставлять дополнительный пробел в начале каждой строки, поэтому вы можете захотеть удалить ведущие пробельные символы на втором шаге.
Объяснение:
(\r?\n(?! \* ?@))?
: Если возможно, сопоставьте новую строку, если за ней не следует * @
^
: Утверждение, что следующее совпадение начинается с начала строки
(
: Либо совпадение
/\*\*\r?\n \*
: /**
|
или
\*/
: */
|
: или
\* ?
: *
, по желанию за ним следует еще один пробел
)
: Конец последовательности чередования