5

私はこれを持っています:

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

@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);

これは部分的に機能します。各行の前にある * のみを削除します。/** と最後のスラッシュ / も取り除くように、誰が私を助けることができますか? どんな助けでも大歓迎です!

PS: たとえば、commentlbock に次のようなものが含まれているとします。

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

その場合、明らかに @foo の後のスラッシュは削除されない可能性があります。結果は次のようになります。

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

そこに正規表現の第一人者がいることを願っています:-)

4

1 に答える 1

4

試す

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

各行の先頭に余分なスペースが挿入されるため、2 番目のステップで先頭の空白を削除することをお勧めします。

説明:

(\r?\n(?! \* ?@))?: 可能であれば、改行が続く場合を除き、改行に一致します。* @

^: 次の一致が行頭で始まることをアサートします

(: どちらでも一致

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

|また

\*/:*/

|: また

\* ?: *、オプションで別のスペースが続く

): 交互シーケンスの終了

于 2010-05-01T11:02:02.213 に答える