2012-06-25 42 views
1

好吧,我再次被卡住了,这次是正则表达式的问题...正在搜索谷歌,正在搜索SO,但没有一个帖子让我开心...所以使长话短说:preg_replace正确的正则表达式重复字符

  • §text=数据库条目的字符串 - >是一切
  • $文本被解析和正则表达式应该2之间取代一切*有:

    [BLA] 。$ matchedtext。[blub]

所以我试图找到那个正确的正则表达式,这就是我想出了:

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

而且2每场比赛*应该消失的还有:/ ...

显然它不工作,否则我不会发帖:D - >任何想法?

回答

1

这也许应该这样做:

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

在你前面的正则表达式的一些评论:

[^\"]*? 

非贪婪*是没有必要的;当您查看否定字符集时,只需在字符集内添加'*'即可。另外,双引号不需要转义。

[^"*]* 

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

+0

感谢所有的鱼:D - 只是不习惯正则表达式 - 感谢您的解释! –