带有换行符的PHP preg_replace

时间:2013-11-27 09:45:37

标签: php regex

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

[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>

如果文本中没有换行符,则一切正常。我知道我需要围绕(.*?)进行更改,但不知道是什么,任何人都可以帮忙解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

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

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

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