【发布时间】:2015-01-16 03:24:11
【问题描述】:
我正在使用 preg_replace 来匹配字符串中的 BBCode 模式并将其替换为我自己的 HTML。
我的基本模式如下\[col=([^"]+?)\]((.|\n)+)\[\/col\]\
现在我要运行它的字符串是:
[col=Test]
Test
[/col]
[col=Test2]
asd
[/col]
(是的,那些回车是这样的:)
现在,如果我只有一个 [col] 标签,它可以正常工作,但是有两个这样的 col 标签,它只匹配外部标签,并将所有内容放在一个大匹配中,而不是两个单独的匹配。我认为我的 ((.|\n+) 正则表达式太激进了,但我不知道如何缩小它。如果我做一个简单的 (.*?) 那么它将与第一个案例与马车不匹配在里面返回。
谢谢!
【问题讨论】:
-
这对你有用吗php.net/manual/en/book.bbcode.php ?而且我认为那里有很多 BBCode 解析器,你为什么要自己解析呢?
-
“这是我的正则表达式”“在这种情况下它不起作用”。它“工作”意味着什么?你想精确匹配什么模式?
标签: php regex preg-replace