1

好吧,我又被卡住了,这次是正则表达式的问题......正在搜索谷歌,正在搜索 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);

对您之前的正则表达式的一些评论:

[^\"]*?

非贪婪*是不必要的;当您查看否定字符集时,只需在字符集中添加“*”即可。此外,双引号不需要转义。

[^"*]*

你只需要你想记住的东西的记忆组;在你的情况下,你不想知道你匹配了一个开始和结束的星号。所以你可以只用一个记忆组来完成你的整个匹配。

于 2012-06-25T03:45:30.533 回答