2013-11-27 51 views
1

了文本有點像這樣走出數據庫PHP的preg_replace用換行

[color=#BF0000]This is just a very simple test. 
Cheers Fred[/color] 

現在這個文本可能有換行符在任何地方的[color...][/color]之間。

一直在努力的preg_replace中使用這個表達式,這是模式

\[color=(#[0-9a-f]{3}|#[0-9a-f]{6}|[a-z\-]+)\](.*?)\[\/color\]/i 

,並獲取與

<span style=\"color:$1\">$2</span> 

如果在文本換行沒有所有的偉大工程所取代。我知道我需要對(.*?)進行更改,但不知道是否有人能幫助解決這個問題?

回答

2

使用s修改,使點匹配換行符:

'~\[color=(#[0-9a-f]{3}|#[0-9a-f]{6}|[a-z-]+)\](.*?)\[/color\]~is' 

您也可以使用替代正則表達式的分隔符,以避免逃避斜線。

+0

* Groan *就這麼簡單,我想盡一切辦法,但是,謝謝 – Martin

+0

@Martin:它對你有用嗎? – anubhava