1

OK、また行き詰まりました。今回は正規表現に問題があります... googleを検索していて、SOを検索していましたが、私を幸せにする投稿はありませんでした...長い話を短くするために:

  • §text=データベースエントリ文字列->すべてである可能性があります
  • $ textが解析され、正規表現は2*の間のすべてを次のように置き換える必要があります。

    [bla]。$matchedtext。[blub]

だから私はそのための正しい正規表現を見つけようとしました、そしてそれは私が思いついたものです:

$text= preg_replace('~(/\*([^\"]*?)\*/)~', "$1<b>$2</b>", $text);

そして、試合ごとに2 *も消えるはずです:/ .. ..

明らかにそれは機能しません、そうでなければ私は投稿しません:D->何かアイデアはありますか?

4

1 に答える 1

1

これはおそらくそれを行う必要があります:

preg_replace('/\*([^"*]*)\*/', '<b>\1</b>', $text);

以前の正規表現に関するいくつかのコメント:

[^\"]*?

貪欲*でない人は必要ありません。負の文字セットを表示している場合は、文字セット内に「*」を追加するだけです。また、二重引用符はエスケープする必要はありません。

[^"*]*

覚えておきたいもののために必要なのはメモリグループだけです。あなたの場合、あなたはあなたが最初と最後のアスタリスクに一致したことを知りたくありません。したがって、1つのメモリグループだけでマッチング全体を実行できます。

于 2012-06-25T03:45:30.533 に答える