1

次のチャットダイアログ用にフォーマットしています。

  • Dalvik:Lorem ipsum dolor sit amet
  • Jenni:Suspendisse facilisis pretium ante、
  • Dalvik:Vivamus feugiat dui ut libero rhoncus nec porttitorvelitposuere。
  • Jenni:Aenean porttitor ipsum eu metus adipiscing
  • Dalvik:(Sed vehicula: magna vitae nulla
  • Jenni:sed dui quam、vitaeconsecteturdui。
  • Jenni:Curabitur vulputate ante :)

上記の太字のテキスト; それは私の置換ステートメントでエラーを起こします:

$name = self::getNameFromMessage($textFormat);
$color = self::getNewTextColor();
$replacement = "<br/><font color='$color'>$name</font>:";
$textFormat = preg_replace(
           $pattern = "/$name :\s/i", //find $name in $textFormat and set text color
           $replacement, 
           $subject = $textFormat
);

エラー:preg_replace()[function.preg-replace]:コンパイルに失敗しました:オフセット15で)がありません

より良い正規表現文字列を提案できますか?

4

1 に答える 1

4

エラーは、正規表現を引用していないことが原因で発生しました。例では、正規表現は a を見つけ(、その後、終了を見つけることを期待しています)。リテラルまたはその他の正規表現のメタ文字に一致させたい場合は()、正規表現を引用する必要があります。

$pattern = preg_quote("/$name :\s/i");
于 2012-05-15T08:07:36.297 に答える