用换行符替换PHP preg_replace


PHP preg_replace with newlines

从数据库中得到的文本有点像这样

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

现在,该文本可以在[color...][/color]之间的任何位置都有换行符。

一直试图在preg_replace中使用此regex,这是模式

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

并被取代

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

如果文本中没有换行符,一切都会很好。我知道我需要围绕(.*?)做出改变,但不知道怎样,有人能帮我吗?

使用s修饰符使点匹配换行符:

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

此外,您还可以使用另一个正则表达式分隔符来避免转义正斜杠。