2012-06-25 70 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 - 只是不習慣正則表達式 - 感謝您的解釋! –