从数据库中得到的文字有点像这样
[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>
如果文本中没有换行符,则一切正常。我知道我需要围绕(.*?)
进行更改,但不知道是什么,任何人都可以帮忙解决这个问题吗?
答案 0 :(得分:2)
使用s
修饰符使点匹配换行符:
'~\[color=(#[0-9a-f]{3}|#[0-9a-f]{6}|[a-z-]+)\](.*?)\[/color\]~is'
另外,您可以使用备用正则表达式分隔符来避免转义正斜杠。