2

メーリング リストを Web ベースのフォーラムにミラーリングする PHP スクリプトがあります。フォーラムのインポートをできるだけ見栄えよくするために、正規表現を使用して電子メールの署名を取得し、適切にスタイルを設定します。正規表現でキャッチしている署名形式は次のとおりです。

This is my message...
--
My signature
TheDude.

This is my message...
---------------
My signature
TheDude.

現在、私はこの正規表現を使用しています:

$message = preg_replace('/\s*(.+)(\s*[\r\n]-{2,}\s+.*)/s', '$1<span class="msg_footer">$2</span>', $message);

それは機能しますが、いくつかの簡単なテストの後、この正規表現が本当に遅いことに気付きました。

私は正規表現が得意ではありません。誰かが正規表現を見て、最適化して高速化する方法を教えてください。

4

2 に答える 2

3

正規表現を使用してメッセージ全体を処理していますが、これは遅くなるはずです。より良い代替手段は、適切なプログラミング ロジックを使用してメッセージを処理することです。たとえば、メッセージを 1 行ずつ調べて、「署名の開始」正規表現と一致するかどうかを行ごとにテストします。そうでない場合は、実際のメッセージを保持する配列または文字列に追加します。一致する場合は、残りのメッセージをフッターに追加します。

ユーザーがメッセージの途中で正規表現に一致する行を使用すると思われる場合は、上部ではなく下部から開始することもできます。

于 2013-07-05T12:47:07.660 に答える