我正在使用preg_replace来匹配字符串中的BBCode模式并将其替换为我自己的HTML。
我的基本模式如下'[col=([^"]+?)']((.|'n)+)'['/col']'
现在我尝试运行它的字符串是:
[col=Test]
Test
[/col]
[col=Test2]
asd
[/col]
(是的,像这样的回车:)
现在,如果我只有一个 [col] 标签,它可以工作 A-ok,但有两个这样的 col 标签,它只匹配外部 tage 并将所有内容放在一个大匹配项中,而不是两个单独的匹配项中。 我认为我的((.|'+) 正则表达式实在是太激进了,但我不知道如何缩小它。 如果我做一个简单的 (.*?),那么它不会将第一种情况与其中的回车符匹配。
谢谢!
使用 DOTALL 修饰符(?s)
使点也与换行符匹配。
(?s)'[col=([^"]+?)'](.+?)'['/col']
演示